6

在我的显示视图中,我有一个我正在循环的项目列表。这一切都很好。但是,我想在每个项目的前面获得一个数字,该数字随着每个循环而增加( i = 0, i++ 你知道演习)。

现在,我如何在 Rails 中做到这一点?这就是我现在得到的:

<% i = 0 %>
<% @trip.triplocations.each do |tl| %>
  <article id="<%= dom_id(tl)  %>">
    <strong> <%= tl.title %> </strong>
      <p>
        <%= tl.description %>
      </p>
  </article>
<% end %>
4

3 回答 3

13

使用#each_with_index而不是在视图中实例化变量!

<% @trip.triplocations.each_with_index do |tl, i| %>
  <article id="<%= dom_id(tl) %>">
    <strong> <%= i %>. <%= tl.title %> </strong>
      <p>
        <%= tl.description %>
      </p>
  </article>
<% end %>
于 2012-10-13T06:07:52.627 回答
0

可能你想要这种代码。

<% i = 0 %>
<% @trip.triplocations.each do |tl| %>
    <article id="<%= dom_id(tl)  %>">
        <strong> <%= tl.title %> </strong>
        <p>
            <%= i %>
            <%= tl.description %>

        </p>
    </article>
    <% i = i + 1 %> 
<% end %>

笔记:

你可以把代码

<%= i %>

循环内你想要的任何地方。

于 2012-10-13T06:07:42.533 回答
0

Ruby中没有++运算符。相反,您使用+= 1

array = 'a'..'d'

i = 0
array.each do |element|
  puts "#{i} #{element}"
  i += 1
end

印刷

0 a
1 b
2 c
3 d

但是,您不应该这样做,因为已经有一种方便的方法:

array = 'a'..'d'

array.each_with_index do |element, i|
  puts "#{i} #{element}"
end

还有另一种特定于 Rails 的方法。如果您使用部分渲染集合,您将有 object_counter 变量可用,其中“object”是您的模型名称。例如:

<%= render @trip.triplocations %>

<% # in views/triplocations/_triplocation.html.erb %>
<%= triplocation_counter %>
<%= triplocation.title %>
于 2012-10-13T06:15:51.980 回答