没有在每个循环中获得第一个表单

时间:2016-04-04 13:21:22

标签: javascript jquery ruby-on-rails forms

我有这种形式的每个循环

<% @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元素中添加代码并检查表单,但是在循环的第一个元素中遇到相同问题的浏览器中没有看到形式。

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

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您在控制器中为类别调用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。