ruby-on-rails - Ruby on Rails : Submitting an array in a form

标签 ruby-on-rails arrays forms hash

我有一个模型,它的属性是数组。我从表单提交中填充该属性的正确方法是什么?

我知道表单输入的名称包含括号的字段会根据输入创建哈希值。我应该在 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/

相关文章:

Javascript map 函数 :add new key and value to object

java - Struts2 xml 验证不起作用

javascript - JQuery - 在第 3 方表单上预填充表单字段

php - HTML 表单 POST 到 PHP 页面

javascript - 如何禁用/覆盖 "Do you want to leave this site?"警报?

ruby-on-rails - 如何在 Rails 3 中使用 number_to_phone?

ruby-on-rails - 跳过与 simple_form 关联的包装器

ruby-on-rails - 在运行时而不是在 stub 声明中执行 rspec stub ?

用于比较数组位置的Java函数?

PHP:在多维数组中查找重复项并回显结果