2010-08-05 126 views
4

菜单has_many:盘子。在Rails 3中排序关联模型?

我想通过Dish.number对盘子进行分类。

目前在我看来,它看起来像:

<table class="menu"> 
    <% @menu.dishes.each do |dish| %> 
    <div class="dish"> 
     <tr> 
     <td> 
      <div class="dish_div dish_name"> 
      <% if @menu.name != 'Övrigt' && @menu.name != 'Box to go' %> 
       <span class="dish_name"><%= "#{dish.number}. #{dish.name}" %></span> 
      <% else %> 
       <span class="dish_name"><%= "#{dish.name}" %></span> 
      <% end %> 

      <% if dish.strength_id == 2 %> 
       <%= image_tag('chili.png') %> 
      <% elsif dish.strength_id == 3 %> 
       <%= image_tag('chili.png') %> 
       <%= image_tag('chili.png') %> 
      <% elsif dish.strength_id == 4 %> 
       <%= image_tag('chili.png') %> 
       <%= image_tag('chili.png') %> 
       <%= image_tag('chili.png') %> 
      <% end %> 
      </div> 
      <div class="dish_div"><%= "#{dish.description}" %></div> 
      <div class="dish_div dish_price"><%= "#{dish.price} kr" %></div> 
     </td> 
     </tr> 
    </div> 
    <% end %> 
</table> 

我该怎么办呢?

它应该在视图还是控制器?

感谢

回答

4

在你的控制器:

def list 
    @dishes = @menu.dishes.all(:order => :number) 
end 

在你看来:

<% @dishes.each do |dish| %> 
+0

或者,如果你想更具体的'@dishes = @ menu.dishes.all(:为了=> '号DESC')'或'@dish es = @ menu.dishes.all(:order =>'number ASC')' – Norto23 2013-05-01 06:34:42

1

我不知道如果我明白你想要做什么,而是要...重复按其编号属性排序的盘子,您只需使用盘子上的:order选项:

<% @menu.dishes.all(:order => :number).each do |dish| %> 
    ... 
<% end %> 
15

都不! :) ---做你的模型中定义

如果你总是想订购的强度:

<% @menu.dishes.sort_by{|dish| dish.strength_id}.each do |dish| %> 
+0

嘿,谢谢,对我很有用。 – 2015-10-29 09:28:07

0

您可以使用:

class Menu 
    has_many :dishes, :order=>'strength_id DESC' 
end 

class Dish 
    belongs_to :menu 
end 

否则,在视图公正的秩序order方法:

<% @menu.dishes.order(number: :asc).each do |dish| %>