首先,我是铁杆的新手 我有一个像这样的控制器。查询工作正常。
class StoreController < ApplicationController
def men_clothing
@men_clothing=Category.find_by_name("clothes").products.where(product_type: "men")
@men_clothing_tshirt=Category.find_by_name("clothes").sub_categories.find_by_name("t-shirt").products
end
现在我有了 men_clothing 的视图,我可以通过迭代来显示 @men_clothing 实例变量中的所有产品。
但是在我的主页上,我有一个链接,我想指向 @men_clothing_tshirt 实例变量,以便点击该链接将显示此实例变量的所有产品。如果有另一个链接它应该指向不同的实例变量。
我应该如何实现这一目标?或建议另一种方法来做到这一点。请解释它是如何工作的。
我知道我可以通过为每个实例变量单独执行操作并为其创建视图来实现。但在这种情况下,我将不得不提出很多意见。
答案 0 :(得分:1)
也许你可以试试similar to this link?
[:tshirt, :pant, :banana_hammock].each do |category|
get "mens_#{category}/:id", :controller => :mens, :action => :show, :type => category, :as => "mens_#{category}"
end
然后,您将获得您正在寻找的路径,例如mens_tshirt_path
,mens_pant_path
等
在您的控制器中,您可以根据传入的“类型”更改要更改的操作
class MenController < ApplicationController
before_filter :find_clothing_by_category
private
def find_clothing_by_category
@clothing = Clothes.where(category: params[:type].to_s)
end
end
答案 1 :(得分:0)
您的链接未重定向到您的实例,它会重定向到您的操作。所以你必须为新的link_to
定义一个新方法,并在该方法中定义你的@men_clothing_tshirt
对象,如下所示:
def your_method
@men_clothing_tshirt=Category.find_by_name("clothes").sub_categories.find_by_name("t-shirt").products
end
并在link_to
重定向到your_method
:
link_to "Tshirt", your_method_path
希望它会有所帮助。谢谢