没有在每个循环中获得第一个形式

not getting first form in each loop

本文关键字:第一个 循环      更新时间:2023-12-05

我有这种类型的每个循环,形式为

<% @catagories.each do |cat| %>
    <label>
        Name:
        <%= cat.name %>
    </label>
    <label>
      Public
      <%= form_for cat, :html => {:class => 'visible_in_activity_record'} do |f| %>
        <%= f.check_box :visible_in_activity_record ,:'data-role'=>"none"%>
      <% end %>
    </label>
<% end %>

当我在浏览器中显示此结果时。

循环的第一个元素没有形式,之后所有元素都有形式

之后,我尝试在浏览器中从inspect元素添加代码和检查表单,但在浏览器中,我遇到了同样的问题,即我在循环的第一个元素中看不到表单。

如果有人遇到这种问题,请帮我解决。

谢谢。

如果您在控制器中为类别调用buildnew,则第一个或最后一个将为零。

你可以通过在呈现表单之前检查新记录来解决这个问题,比如:

<% @catagories.each do |cat| %>
  <%- unless cat.new_record? %>
    <label>
      Name:
      <%= cat.name %>
    </label>
    <div class='label-style'>
      Public
      <%= form_for cat, :html => {:class => 'visible_in_activity_record'} do |f| %>
        <%= f.check_box :visible_in_activity_record ,:'data-role'=>"none"%>
      <% end %>
    </div>
  <% end %>
<% end %>

此外,如果您感兴趣,将整个表单放在label字段中是无效的html,最好创建一个具有相同样式和行为并带有标签的div。