在Ruby-on-Rails中以几种非模型形式创建多个具有已知值和相同名称的简单隐藏字段的最简单方法是什么(在我的情况下为form_remote_tag,但我猜这无关紧要)?

“简单的隐藏字段”是指名称只是单个字符串(field_name)而不是数组(field_name[])的一部分,以便可以从params哈希中将值简单读取为而不是params[:field_name]

我发现

<% form_remote_tag :url => {:action => "do_act"} do %>
  <%= hidden_field :field_name, 0, :name => "field_name", :value => "foo" %>
  <%= submit_tag "Submit" %>
<% end %>


产生一个可接受的元素(params[:field_name][0]),但是如果我省略<input id="field_name_0" name="field_name" type="hidden" value="foo" />参数,则呈现的字段的名称为:name。省略field_name[0]显然会导致异常行为。

如果只有一个这样的形式,0会生成一个可接受的元素,但如果存在多个形式,则会生成HTML警告(重复ID)。

有没有办法用更少的参数来做到这一点(除非定义一个帮助器)?

最佳答案

我会使用hidden_field_tag并根据每种表单的不同值手动设置ID。像这样:

<%= hidden_field_tag :field_name, 'value', :id => 'field_name_' + unique_value %>


unique_value可以是任何东西。如果这些表单具有它们引用的某种父记录,则它可能是父记录的ID。我认为这就是为什么您首先在同一页面上具有多个相似表单的原因。

09-25 17:15
查看更多