我有一个rails应用程序,显示一个名为modules的项目列表.我正在迭代这些,为每个包含remote_form_for调用的部分呈现部分.
这一切都有效,但HTML验证失败,因为我的表单文本字段都具有相同的ID.
表单上有一个:前缀选项(或其他东西)我可以用它来解决这个问题吗?
更新:(
一些代码)
//_module_form.html.erb
<% remote_form_for app_module do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= submit_tag 'Save' %>
<%end %>
//parent page
<% @thing.modules.each do |app_module| %>
<%= render :partial => "module_form", :locals => { :app_module => app_module } %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
因此,如果我在集合中有多个项目,我会在同一页面上呈现相同的表单,并且表单ID和文本框ID是重复的.
我可以很容易地自定义表单ID,但是text_box怎么样,因为控制器正在寻找特定的命名控件?
:index => object.id创建表单时将其添加到选项哈希中。这应该以 的形式生成 id,object_id_attribute而不会干扰控制器。
编辑
有关的文档:index具有含糊的误导性。:index确实对表单提交有影响。解决方案是指定:id每个字段的属性。这将改变id财产,保持name完好无损(这对提交来说很重要)。
以下是我在通用帮助程序中用于生成这些字段的代码:
def create_field( f, field_type, object, field_name )
field_id = "#{object.class.name.downcase}_#{object.id.to_s}_#{field_name.to_s}"
f.send( field_type, field_name, :id => field_id )
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1162 次 |
| 最近记录: |