在Rails 3.1.1中将值从视图传递到控制器时遇到问题

时间:2011-11-17 16:14:43

标签: ruby ruby-on-rails-3.1

我有两个型号Product和Category,它们分别有has_many和belongs_to关联。现在,我想要做的是当我点击特定类别时,我希望列出该类别的所有产品。我该怎么做

这是我的观点

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

和控制器中的方法

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

谢谢! (我知道它简单的东西,但有时你会失明,看不到直截了当的方式,所以你必须寻求其他人的帮助)

EDIT 好吧也许我想办法解决这个问题..但我不确定它是否以正确的方式完成

现在我的视图和模型看起来像这样

<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

告诉我这是否正确?

2 个答案:

答案 0 :(得分:1)

我建议你至少阅读Getting Started指南,因为你做错了。

答案 1 :(得分:1)

您的查找应该更像Category.find(params[:id]).products。但请尝试遵循RESTful路由原则,并嵌套您的资源。 Rails会为你做更多的事情。