我找到了我想要做一個最好的答案,知道我想在這裏分享,首先我安裝一個gem has_scope
。在我把products_controller
scope :category, -> category_id {where(:category_id => category_id)}
然後:
has_scope :category
和
def index
@products = apply_scopes(Product).all
end
然後在我的導航欄,我把
然後在我的產品型號我做這個範圍此鏈接:
<li><%= link_to 'Oils', category: 1 %></li>
<li><%= link_to 'Wines', category: 2 %></li>
這是可能的只顯示這些類型的產品類別。 但是這有一個問題! 它將工作只是如果你首先點擊Products.path將顯示所有的產品,然後如果你點擊這些鏈接將正常工作。 但是,當我點擊Contact.path等其他鏈接,然後點擊Oils鏈接時,它將顯示在導航器/聯繫人?category = 1中,然後不會顯示像我想要的那樣過濾的產品。
那麼對於修復解決此問題是:
<li><%= link_to 'Azeites', '/products?category=1' %></li>
<li><%= link_to 'Vinhos', '/products?category=2' %></li>
而且你每次點擊時會顯示完美,非常簡單的做法。謝謝你們的幫助!
來源
2015-11-12 18:48:17
rld
未經測試,但嘗試'Product.joins(:category).where(category:{name:「A Category Name」})'。或者,'Category.find_by(名稱:「類別名稱」).products'。 – Rog