gpt4 book ai didi

ruby-on-rails - 同一页面上的多个 remote_form_for 导致重复 id

转载 作者:行者123 更新时间:2023-12-03 16:08:24 26 4
gpt4 key购买 nike

我有一个 Rails 应用程序,它显示一个名为模块的项目列表。我正在迭代这些,为每个包含 remote_form_for 调用的部分渲染一个部分。

这一切都有效,但 HTML 验证失败,因为我的表单文本字段都具有相同的 id。

表单(或其他)上是否有一个 :prefix 选项可以用来解决这个问题?

更新:
(一些代码)

    //_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 %>

因此,如果我在集合中有超过 1 个项目,我会在同一页面上呈现相同的表单,并且表单 ID 和文本框 ID 是重复的。

我可以很容易地自定义表单 ID,但是 text_box 呢,因为 Controller 正在寻找特定的命名控件?

最佳答案

添加 :index => object.id创建表单时的选项哈希。这应该以 object_id_attribute 的形式生成 ID。不干扰 Controller 。

编辑

关于 :index 的文档是模棱两可的误导。 :index确实对表单提交有影响。解决方案是指定 :id每个字段的属性。这将改变 id属性(property), 离开 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

关于ruby-on-rails - 同一页面上的多个 remote_form_for 导致重复 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2425690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com