hummingbird
@hummingbird

Почему возникает ошибка: «undefined method `[]' for nil:NilClass»?

Есть хелпер field_pattern. Во вюшке пишу:
field_pattern validation: {type: 'length', length: '50-200'}


А это код хелпера.
def field_pattern data
	validation = data[:validation]
	validation
end

Получаю:
{:type=>"length", :length=>"3-100"}


Пишу:
validation[:type] # или validation[:length]
Получаю:
undefined method `[]' for nil:NilClass


Пишу:
validation.class
Получаю:
Hash


Где я согрешил?
  • Вопрос задан
  • 3126 просмотров
Пригласить эксперта
Ответы на вопрос 2
@vsuhachev
validation это локальная переменная внутри функции field_pattern, вне этой функции ее не видно, что не исключает того что у вас есть какая-то другая переменная/функция с таким именем в той области видимости в которой вы вызываете код, падающий с ошибкой
Ответ написан
Комментировать
@vadimstroganov
def field_pattern data
  validation = data[:validation]
  validation
end

v = field_pattern validation: {type: 'length', length: '50-200'}
v[:type] # "length"
v[:length] # "50-200"


Или сделать переменную validation глобальной:
def field_pattern data
  $validation = data[:validation]
  $validation
end

$validation[:type] # "length"
$validation[:length] # "50-200"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы