Rails 5, хеш параметров доступа
Я думаю, что я теряю это здесь... так что у меня есть хэш params, который я хочу использовать в контроллере:
Параметры: {"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"etcetc", "scan"=> {"1"=>{"scan_id"=>"40", "organisation_id"=>"1", "select_scan"=>"false", "role"=>""}, "2"=>{"scan_id"=>"40", "organisation_id"=>"2", "select_scan"=>"false", "role"=>""}, "3"=>{"scan_id"=>"40", "organisation_id"=>"3", "select_scan"=>"false", "role"=>""}, "number"=>"222", "description"=>"nice!", "expert"=>" для чайников "," децентрализация "=>"0"}, "commit"=>"Обновить сканирование", "id"=>"40"}
Теперь, если вернемся к моему виду переменная экземпляра, со значением:
@q = params[:id]
это дает мне "40", как и ожидалось.
@q = params['id']
также дайте мне "40"
НО, это единственное значение параметра, к которому я могу получить доступ? Любое другое значение дает мне ноль, или ошибка, как:
@q = params[:scan][:number] # => undefined method `[]' for nil:NilClass
@q = params['scan']['1'][:role] # => undefined method `[]' for nil:NilClass
@q = params[:scan].to_a # => []
@q = params[:scan].class # => NilClass
Я читал о сильных параметрах, и все параметры разрешены, но все же значения не возвращаются?
1 ответ
Хотя, насколько я мог видеть, ваша хеш-структура находится в кавычках (" "), и вы пытаетесь получить к ней доступ с помощью символов (:) без.with_indifferent_access
например:
@q = params['scan']['number']
@q = params['scan']['1']['role']
@q = params['scan'].to_a
@q = params['scan'].class
Попробуй.