У меня есть модель, которая имеет атрибут, который является Массивом. Каков надлежащий способ для меня заполнить тот атрибут от представления формы?
Я знаю ввод формы с полем, имя которого включает скобки, создает хеш из входа. Я должен просто брать это и ступать через него в контроллер для массирования его в массив?
Пример для создания этого менее абстрактным:
class Article
serialize :links, Array
end
Переменная ссылок принимает форму массив URL, т.е. [["http://www.google.com"], ["http://stackoverflow.com"]]
Когда я использую что-то как следующее в моей форме, оно создает хеш:
<%= hidden_field_tag "article[links][#{url}]", :track, :value => nil %>
Результирующий хеш похож на это:
"links" => {"http://www.google.com" => "", "http://stackoverflow.com" => ""}
Если я не включаю URL от имени ссылки, дополнительные значения ударяют друг друга:
<%= hidden_field_tag "article[links]", :track, :value => url %>
Результат похож на это: "links" => "http://stackoverflow.com"
Если ваша html-форма имеет поля ввода с пустыми квадратными скобками, то они будут преобразованы в массив внутри params в контроллере.
# Eg multiple input fields all with the same name:
<input type="textbox" name="course[track_codes][]" ...>
# will become the Array
params["course"]["track_codes"]
# with an element for each of the input fields with the same name
Добавлено:
Обратите внимание, что помощники rails не настроены для автоматического выполнения трюка с массивом. Поэтому вам, возможно, придется создать атрибуты name вручную. Кроме того, у флажков есть свои проблемы при использовании помощников rails, поскольку помощники флажков создают дополнительные скрытые поля для обработки неотмеченного случая.