我有10个表单字段,我想在每个字段旁边添加一个数字,从1到10顺序排列。问题是代码已经在循环中。它在部分内部,而部分则传递给集合。
<%= fields_for "list", f do |f| %>
<!-- I want 1, 2, etc to appear here depending on the iteration. -->
<%= f.label :name %>
我尝试使用<%= i += 1 %>
,但由于未定义i
,因此无效。如果我定义i
,它将继续重置为相同的数字,因此没有区别。有什么想法吗?
答案 0 :(得分:4)
Rails自动定义一个名为partialname_counter
的局部变量,显然,“partialname
”是你的局部名称。所以如果你的部分被称为例如_list_item.html.erb
你可以这样写:
<%= fields_for "list", f do |f| %>
<%= list_item_counter + 1 %>
<%= f.label :name %>
<% end %>
(+ 1
当然是因为计数器从0
开始。)
另一个选项就是让浏览器使用有序列表为您编号:
在视图中:
<ol>
<%= render :list_item, :collection => @some_items %>
</ol>
...并且在部分:
<%= fields_for "list", f do |f| %>
<li>
<%= f.label :name %>
</li>
<% end %>
这个选项可能更具语义性,列表很容易在CSS中使用。