我有一个模型,它的属性是数组。我从表单提交中填充该属性的正确方法是什么?
我知道表单输入的名称包含括号的字段会根据输入创建哈希值。我应该在 Controller 中单步执行它并将其按摩到数组中吗?
使其不那么抽象的示例:
class Article
serialize :links, Array
end
links 变量采用 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 表单具有带有空方括号的输入字段,那么它们将在 Controller 中的 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 帮助程序,复选框也有自己的问题,因为复选框帮助程序会创建额外的隐藏字段来处理未选中的情况。
关于ruby-on-rails - Ruby on Rails : Submitting an array in a form,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3089849/