在一行代码中初始化和递增变量

时间:2009-07-19 19:25:30

标签: ruby-on-rails ruby variables erb

这是在ruby中执行此操作的DRIest方法吗?

<% for item in @items %>
  <%= n = n + 1 rescue n = 1 %>
<% end %>

将“n”初始化为“1”并在循环进行时将其递增(并将其打印出来),因为这是我的应用程序的一个视图

3 个答案:

答案 0 :(得分:16)

您可以使用三元运算符:

<% for item in @items %>
  <%= n = n ? n+1 : 1 %>
<% end %>

但是,根据你想要做的事情,我猜测each_with_index会更合适

<% @items.each_with_index do |item, n| %>
  <%= n %>
<% end %>

答案 1 :(得分:5)

你也可以依赖ruby的nil强制到一个导致零的整数。

<% for item in @items %>
  <%= n = n.to_i + 1 %>
<% end %>

答案 2 :(得分:0)

庵。

n = @items.size