我有一个具有Array属性的模型.从表单提交中填充该属性的正确方法是什么?
我知道有一个带有字段的表单输入,其名称包括括号,从输入创建一个哈希.我应该只是拿着它并在控制器中踩过它来按摩它成阵列吗?
让它不那么抽象的例子:
class Article
serialize :links, Array
end
Run Code Online (Sandbox Code Playgroud)
links变量采用URL数组的形式,即 [["http://www.google.com"], ["http://stackoverflow.com"]]
当我在表单中使用类似下面的内容时,会创建一个哈希:
<%= hidden_field_tag "article[links][#{url}]", :track, :value => nil %>
Run Code Online (Sandbox Code Playgroud)
结果哈希看起来像这样:
"links" => {"http://www.google.com" => "", "http://stackoverflow.com" => ""}
Run Code Online (Sandbox Code Playgroud)
如果我没有在链接名称中包含url,则其他值会相互冲突:
<%= hidden_field_tag "article[links]", :track, :value => url %>
Run Code Online (Sandbox Code Playgroud)
结果如下: "links" => "http://stackoverflow.com"
我想知道我将在服务器端看到的POST变量的顺序是否有任何形式的保证.
我的用例是我有一个表单,用户将填写该表单以输入姓名和电子邮件列表.我正在使用表行,每行有两个输入:
<table>
<tr>
<td><input type='text' name='name[]' /></td>
<td><input type='text' name='email[]' /></td>
</tr>
<tr>
<td><input type='text' name='name[]' /></td>
<td><input type='text' name='email[]' /></td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
该行可能通过javascript克隆,以允许用户输入更多的名称和电子邮件,因此我不会提前知道将提交多少.
在服务器端,我看到$ _POST ['email']和$ _POST ['name']设置,但我想知道我是否可以安全地假设$ _POST ['email'] [0]将对应$ _POST ['name '] [0],$ _POST ['email'] [1]将对应$ _POST ['name'] [1],依此类推.一些基本测试似乎表明是,但我想知道是否有保证或我是否只是幸运.