相关疑难解决方法(0)

Ruby on Rails:提交表单中的数组

我有一个具有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"

forms arrays hash ruby-on-rails

66
推荐指数
5
解决办法
8万
查看次数

在HTML表单中提交的数组的预期顺序是什么?

我想知道我将在服务器端看到的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],依此类推.一些基本测试似乎表明是,但我想知道是否有保证或我是否只是幸运.

html javascript php forms

10
推荐指数
2
解决办法
1878
查看次数

标签 统计

forms ×2

arrays ×1

hash ×1

html ×1

javascript ×1

php ×1

ruby-on-rails ×1