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

Bru*_*uno 5 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 %>
Run Code Online (Sandbox Code Playgroud)

这会生成以下html:

<input class="text" id="person_address_attributes_zip_code" name="person[address_attributes][zip_code]" type="hidden" />
Run Code Online (Sandbox Code Playgroud)

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

提前谢谢了.布鲁诺

Dan*_*and 5

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

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


Bri*_*ing 1

最简单的方法是强制 id 为您想要的任何内容,例如:

<%= form.hidden_field :zip_code, :id => 'zip_code' %>
Run Code Online (Sandbox Code Playgroud)

name 字段用于请求参数中,因此 id 字段设置为什么并不重要。

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

  • 是否有一个实际上可以用来获取这些生成的 id 的辅助方法?而不是必须设置单独的 id? (3认同)