Я создаю вложенную модель в Rails, но я хочу добавить поля к вложенным моделям в контроллере. Я не использую hidden_field_tag, так как он может быть подделан.
Вот мой хэш params:
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 был «компанией», тогда я подумал, что это сработает:
len = params["dummy"]["users_attributes"].size
counter = 0
while counter < len
params["dummy"]["users_attributes"][counter]["companyid" => "company"]
counter = counter + 1
end
Но я получаю ошибку "undefined method` [] 'для nil: NilClass "для первой строки в цикле while. Я не совсем уверен, почему.
Может ли кто-нибудь помочь мне, чтобы я мог изменить хэш параметров?
EDIT:
Итак, я наконец понял это. Я действительно не использовал ни одно из решений точно. Сначала я установил тег hidden_field пустым для companyid. Затем в свой контроллер я положил:
params["dummy"]["users_attributes"].each do |key, val|
params["dummy"]["users_attributes"][key]["companyid"] = "company"
end
Не самый элегантный код, но он будет работать.