Ruby Rails:检索表单输入字段的id

时间:2010-12-27 00:14:56

标签: ruby-on-rails

我是Ruby和Ruby on Rails的新手。我正在尝试找到一种方法来获取由hidden_​​field助手创建的输入字段上使用的id,因为我需要添加一些javascript,它使用jquery按id获取输入字段。

我有两个模型>人和地址。 Person has_one地址和地址具有zip_code属性。

我正在使用以下代码生成包含隐藏字段的表单:

<%= form.fields_for :address do |form| %>

     <%= form.hidden_field :zip_code %>

<% end %>

这会生成以下html:

<input class="text" id="person_address_attributes_zip_code" name="person[address_attributes][zip_code]" type="hidden" />

是否有任何方法或帮助器给我用于给定属性字段的id?例如,我需要知道:zip_code生成的id是“person_address_attributes_zip_code”。

非常感谢提前。 布鲁诺

2 个答案:

答案 0 :(得分:5)

表单构建器可以访问对象名称,您可以使用它来获取生成的ID,前提是您知道字段名称。我在Rails 3中测试了这个:

<%= form.fields_for :addresses do |form|%>  
  <%= "#{form.object_name}[zip_code]".gsub(/(\])?\[/, "_").chop %>
  <%= form.text_field :zip_code %>  
<% end %>

答案 1 :(得分:1)

最简单的方法是强制id成为你想要的任何东西,例如:

<%= form.hidden_field :zip_code, :id => 'zip_code' %>

name字段用于请求参数,因此id字段的设置无关紧要。

在Rails 3中确定id的方法在actionpack / lib / action_view / helpers / form_helper.rb中,主要在InstanceTag模块中。大多数主要模型名称的变体已经过清理,以删除特殊字符,后跟下划线,后跟字段名称已清理,但嵌套模型和属性会增加额外的复杂性。