我是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”。
非常感谢提前。 布鲁诺
答案 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模块中。大多数主要模型名称的变体已经过清理,以删除特殊字符,后跟下划线,后跟字段名称已清理,但嵌套模型和属性会增加额外的复杂性。