2011-11-17 108 views
0

我有两个model和product类,它们分别具有has_many和belongs_to关联。现在,我想要做的是当我点击特定类别时,我希望列出该类别的所有产品。如何做到这一点在Rails 3.1.1中将视图传递给控制器​​的麻烦

这里是我的看法

<p><%=link_to @product.category.name, show_by_category_products_path(@product.category.id)%> <%= @product.name%> <%[email protected]%><p> 

和方法在控制器

def show_by_category 
    @products = Product.where("category_id=?", :id) 
    end 

谢谢! (我知道它的简单的东西,但有时你是盲目的,不能看到一种简单的方式,所以你必须寻求别人的帮助)

编辑 好吧也许我想出了一种方法来解决这个..但我如果在正确的方式

做我不知道现在我的视图和模型看起来像这样

<p><%=link_to @product.category.name, show_by_category_product_path(id: @product.id)%> <%= @product.name%> 

def show_by_category 
@prod = Product.find(params[:id]) 
@products = Product.where('category_id=?', @prod.category_id) 
end 

告诉我,如果这是正确的方式?

+0

那么问题是什么?你有错误吗? – pseudopeach

+0

您是否为自定义操作添加了路线('show_by_category')?它可能应该像“会员”那样; get:show_by_category;在你的'资源:产品做...结束'块中结束。 – Frost

+0

是的,我添加了路线。我没有获得一系列产品。它的零。 –

回答

1

您的搜索结果应该更像Category.find(params[:id]).products。但请尽量遵循RESTful路由原则,并嵌套您的资源。 Rails将为你做更多的事情。

+0

这有帮助。谢谢! –

相关问题