当某些列发生变化时,你如何循环?

时间:2017-03-20 14:10:07

标签: ruby-on-rails ruby

查看:

<% @foods.each do |f| %>
<table>
 <tr>
   <td>food name</td>
   <td>price</td>
 </tr>
 <tr>
   <td>
     <%= food.name %>
   </td>
   <td>
     <%= food.price %>
   </td>
 </tr>
</table>
<% end %>

@foodsfood_category_id(值为1,2,3,...),每个类别都有很多食物。当food_category_id在循环期间发生变化时,我想为表格顶部的每个类别添加标题,或者在之前的类别之间添加一个空格以便于查看。那些food_category_id将来会增加/减少。

你如何循环这种情况?我有一些想法但不确定什么是更好的主意。

例如,Appetizer是food_category_id中的一个。 Pasta是food_category_id中的2个。

这就是我的期望:

Appetizer <- I want to add this headline when category_id changes
food name  price 
aaaa        $3
bbbb        $2
cccc        $1

Pasta <- I want to add this headline when category_id changes
food name  price 
aaaa        $3
bbbb        $2
cccc        $1

1 个答案:

答案 0 :(得分:1)

你只需稍微改变你的结构 -

首先,将@foods定义为Food.group_by { |f| f.food_category.name }(假设FoodCategory具有类似name的属性,但将其更改为您使用的任何属性)。

然后像这样循环你的食物:

@foods.each do |category, foods|
  #...your code here
  # remember that `foods` is an Array so you'll loop through that separately
  # foods.each do |food|
  #   ...display food name and price
  # end
end