有人可以解释具有相同名称和ID的多个字段的Rails行为吗?

时间:2012-01-12 18:55:37

标签: ruby-on-rails forms params

我需要在我的Rails应用程序中为jQuery日期选择器创建一个输入掩码,其中第一个表单字段使用m / d / yy格式,而datepicker使用正确的数据库格式填充隐藏的输入。

我使用的是SimpleForm,因此我扩展了自己的输入,以便输入前面有掩码。

我已经完成了所有设置,在查看浏览器时,在我认为自己完成之前,这一切都运行良好。

表单最后有两个相同属性的输入,每个输入具有相同的id和名称。我从没想过这会起作用。检查开发日志我只看到一个提交日期,两个中的第二个是具有数据库正确格式的日期。

这一切都好吗?我是否应该采取一些额外的步骤,即使这似乎工作得很好,更重要的是,有人可以解释导致这种行为的根本原因吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

Rails使用哈希params来存储提交的字段。当您使用相同的名称声明两个或更多输入时,它会像您执行

之类的操作一样
h=Hash.new
h[:name]="foo"
h[:name]="bar"

结果为bar,因为foo被覆盖。因此,“胜利者”始终是浏览器最后附加到postdata的字段值。

但如果我在哪里,我不会依赖于第二个字段最后附加的浏览器。