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

Попробуй.

Другие вопросы по тегам