Я создаю вложенную модель в 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
Не самый элегантный код, но он будет работать.