0

我有许多步骤,并且我有一个计数器,我想在块迭代这些步骤时增加它。更具体地说,如果它的媒体类型是“excel”或其他任何我希望它说的步骤 2、步骤 3、步骤 4 等。但是在视图中它只说步骤 1、步骤 1、步骤 1 - 它不正确增量。怎么了?任何帮助将不胜感激。

 <% @step_list.each do |i| %>

 <% x = 0 %>
  <% case %>
  <% when i.media_type == 'video' %>
   <% x += 1 %>
        <li class="active">

              <span>Video</span>
          </a>
        </li>


  <% when i.media_type == 'excel' %>
    <% x += 1 %>
        <li class="">

              <span>Step <%= x %> </span>

        </li>

  <% else %>

  <% x += 1 %>

        <li class="dark-nav ">
              <span>Step <%= x %></span>

        </li>

  <% end %>   
<% end %>
4

3 回答 3

0

你为什么不使用each_with_index

[1, 2, 3].each_with_index do |n, i|
end
于 2013-08-08T19:52:51.090 回答
0

您的代码中的问题是您在每个循环中初始化变量x,您应该在循环之前将其初始化为零。

为了解决这个问题,您可以使用以下方法重构它.each_with_index do |element, i|

<% @step_list.each_with_index do |step, i| %>
  <% case step.media_type %>
  <% when 'video' %>
    <li class="active">
      <span>Video</span>
    </li>
  <% when 'excel' %>
    <li class="">
      <span>Step <%= i %></span>
    </li>
  <% else %>
    <li class="dark-nav ">
      <span>Step <%= i %></span>
    </li>
  <% end %>   
<% end %>
于 2013-08-08T19:52:55.450 回答
0

你每次重置你的 x ,试试这个:

<% @step_list.each_with_index do |i,index| %>
  <% case i.media_type %>
  <% when 'video' %>
        <li class="active">

              <span>Video</span>
          </a>
        </li>

  <% when 'excel' %>
        <li class="">
          <span>Step <%= index %> </span>
        </li>

  <% else %>
        <li class="dark-nav ">
              <span>Step <%= index  %></span>

        </li>
  <% end %>   
<% end %> 
<% end %>
于 2013-08-08T19:56:42.023 回答