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

Zep*_*ock 6 ruby variables ruby-on-rails erb

这是在红宝石中做到这一点的DRYest方法吗?

<% for item in @items %>
  <%= n = n + 1 rescue n = 1 %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

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

zai*_*ius 16

您可以使用三元运算符:

<% for item in @items %>
  <%= n = n ? n+1 : 1 %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

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

<% @items.each_with_index do |item, n| %>
  <%= n %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

  • 分配初始值然后每次增加1?该指数不是一个指标 - 它是一个指数.如果要将其增加固定偏移量,只需在打印时添加:<%= n + 5%> (2认同)

dna*_*oli 5

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

<% for item in @items %>
  <%= n = n.to_i + 1 %>
<% end %>
Run Code Online (Sandbox Code Playgroud)