如何在Ruby on Rails表单中创建一系列数字

时间:2012-01-11 21:06:11

标签: ruby ruby-on-rails-3

我有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,它将继续重置为相同的数字,因此没有区别。有什么想法吗?

1 个答案:

答案 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中使用。