2010-08-05 151 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| %>