每当我单击标签(在复选框中)时,它都会转到页面顶部。
我实际上已经删除了所有脚本和样式,但仍然给出了相同的结果。这可能与循环有关,但仍在调查中。
<% @requests.each do |request| %>
<%= form_with(model: request, remote: true, :id => "form#{id}", :class => "form-class") do |form| %>
<%= form.collection_check_boxes :category_ids, Category.all, :id, :name do |b| %>
<%= b.check_box %>
<%= b.label %>
<% end %>
<% end %>
<% end %>
生成的 HTML
<input type="checkbox" value="24" name="request[category_ids][]" id="request_category_ids_24">
<label for="request_category_ids_24">This is a general option</label>
每个标签和输入都有唯一的 ID
它应该选中复选框,什么也不做,而是转到页面顶部。
问题是当您在 rails 中创建 Forms 循环时,它最终会在输入和标签以及循环的不同部分之间创建非唯一 ID。它与标签的“for”和输入的“id”之间的联系有关。
为了解决这个问题,创建自定义 ID 以确保标签激活正确的复选框。
问题:
<%= b.check_box %>
<%= b.label %>
解决方案:
<%= b.check_box id: "#{request.id}-#{b.value}" %>
<%= b.label for: "#{request.id}-#{b.value}" %>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句