Изменение хэша параметров в Rails

Я создаю вложенную модель в Rails, но хочу добавить поля во вложенные модели в контроллере. Я не использую hidden_field_tag, так как его можно подделать.

Вот мой хэш параметров:

 Parameters: {"dummy"=>{"users_attributes"=>{"0"=>{"email"=>"jjjj@gmail.com", "id"=>"", "_destroy"=>"false"}, "1"=>{"email"=>"qqq@gmail.com", "id"=>"", "_destroy"=>"false"}}}, "commit"=>"Create Dummy"}

Я хочу, чтобы под каждым user_attributes было поле с названием companyid. Скажем, я хотел, чтобы companyid был "company", тогда я подумал, что это сработает:

len = params["dummy"]["users_attributes"].size
 counter = 0
 while counter < len
  params["dummy"]["users_attributes"][counter]["companyid" => "company"]
  counter = counter + 1
end

Но я получаю ошибку "undefined method `[]' for nil:NilClass" для первой строки в цикле while. Я не совсем уверен, почему.

Кто-нибудь может мне помочь, чтобы я мог изменить хеш параметров?

РЕДАКТИРОВАТЬ: Итак, я, наконец, понял это. Я действительно не использовал ни одно из решений. Во-первых, я установил тег hidden_field пустым для идентификатора компании. Затем я вставляю в свой контроллер:

 params["dummy"]["users_attributes"].each do |key, val|
  params["dummy"]["users_attributes"][key]["companyid"] = "company"
 end

Не самый элегантный код, но он будет работать.

6
задан NielMalhotra 20 March 2012 в 20:53
поделиться