查看:
<% @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 %>
@foods
有food_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
答案 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