我有这种形式的每个循环
<% @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元素中添加代码并检查表单,但是在循环的第一个元素中遇到相同问题的浏览器中没有看到形式。
如果有人遇到这类问题,请帮我解决这个问题。
谢谢。
答案 0 :(得分:0)
如果您在控制器中为类别调用build
或new
,那么第一个或最后一个将为零。
您可以通过在呈现表单之前检查新记录来解决此问题,如下所示:
<% @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。