开发者社区> 问答> 正文

Ruby on Rails:以表单提交数组

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

我知道有一个带有字段名称(包括方括号)的表单输入会从输入中创建一个哈希。我是否应该仅接受它并逐步进入控制器以将其按摩成阵列?

使其抽象程度降低的示例:

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"我有一个模型,该模型的属性为数组。我从表单提交中填充该属性的正确方法是什么?

我知道有一个带有字段名称(包括方括号)的表单输入会从输入中创建一个哈希。我是否应该仅接受它并逐步进入控制器以将其按摩成阵列?

使其抽象程度降低的示例:

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"

展开
收起
保持可爱mmm 2020-02-10 16:02:42 916 0
1 条回答
写回答
取消 提交回答
  • 如果您的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助手,则复选框也有其自身的问题,因为复选框助手会创建其他隐藏字段来处理未选中的情况。

    2020-02-14 11:55:28
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载