2015-04-17 15 views
0

我從零開始構建電子商務網站。 每個產品都有許多產品詳細信息,每個product_detail都是該產品的[size,price_of_that_size,color等]。Rails:視圖內的數據庫調用

在我的產品控制器,我得到:

def index 
    @products = Product.all 
    @categories = Category.all 
end 

的事情是在我的索引#查看我需要的最低product_details的價格該產品,以便能夠顯示每個產品的起始價格。

我的產品展示#控制器上我這樣做來獲取信息:

@retailprice = @product.product_details.order("retail_price ASC").first 

,但在我的產品#指數我只有@ products.all上我已經迭代上我的看法。

它是不好的做法,呼籲

product.product_details.order("retail_price ASC").first 
在每次迭代

我的看法?

我經常需要命令顯示信息(asc/desc),但是當它在控制器中不太自然時,我不知道該把它放在哪裏。

任何意見將不勝感激。

+1

試在您的模型中創建方法 def lowest_price_details product_details.order(「retail_price ASC」)。首先 結束 並且在模板中您可以使用類似product.lowest_price_details。 – dpa

回答

1

您可以在的has_many本身的選項指定裸集合的排序順序:

class Product < ActiveRecord::Base 
    has_many : product_details, :order => 'retail_price ASC' 
end 

你也可以有兩個關係,並把它們作爲比肩您的要求:

class Product < ActiveRecord::Base 
    has_many :product_details 
    has_many :product_details_desc, :order => 'retail_price DESC' 
    has_many :product_details_asc, :order => 'retail_price ASC' 
end 
+0

哇謝謝!這非常酷 – jayD