如何在erb中编写while循环

时间:2015-04-19 14:27:05

标签: ruby-on-rails ruby-on-rails-4 erb

我有一个有两个列级别的表和插槽。每个级别可以有很多插槽,但是我已经制作了一个用于模拟这种情况的表。例子

level    |   slot
1        |   1
1        |   2
1        |   2
2        |   1
2        |   2
2        |   2

在我的erb模板中,我想创建一个表格,通过制作类似网格的东西来模拟这种情况。 到目前为止的问题是,我想要两个循环来处理这种情况。对于每个级别,我获得插槽的数量并显示它们。提供的each循环没有帮助。我正在考虑创建一个跟踪级别变量的变量,当它发生变化时,我会调用内部循环。但是这对我没有效率。

我也在考虑创建一个json对象,并将slot apeats作为一个数组放在level变量中,但我不知道从哪里开始这个。

或者有没有办法在erb模板中编写while循环?

3 个答案:

答案 0 :(得分:4)

你可以用ruby(erb)这样写一个循环:

<% loop do %>
  ...
  <% break if <condition> %>
<% end %>

请参阅Is there a "do ... while" loop in Ruby?

答案 1 :(得分:3)

ERB只是红宝石

<% @collection.each do |value| %>
  <%= value %>
<% end %>

答案 2 :(得分:2)

它仍然可以是一张桌子。我会在您的操作中创建一个名为@slots的变量,并在您的erb视图中调用.each,如下所示:

<% @slots.each do |slot| %>
 <% if ...  %>
  <div class="left-column">
    <%= slot.level %>
  </div>
  <div class="right-column">
    <%= slot.id %> <!-- or whatever var you you want --> 
  </div>
 <% else %>

 ...

 <% end %>
<% end %>

这样每个新的slot都会自动添加到收藏中,您不必担心level

的更改