0

首先,我是 Rails 的新手,
我有一个像这样的控制器。查询工作正常。

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实例变量,这样单击该链接将显示该实例变量的所有产品。如果有另一个链接,它应该指向不同的实例变量。

我应该如何实现这一目标?或者建议另一种方法来做到这一点。请解释它是如何工作的。

我知道我可以通过对每个实例变量进行单独的操作并为其创建视图来做到这一点。但在那种情况下,我将不得不提出很多意见。

4

2 回答 2

1

也许您可以尝试类似于此链接的内容?

[:tshirt, :pant, :banana_hammock].each do |category|
  get "mens_#{category}/:id", :controller => :mens, :action => :show, :type => category, :as => "mens_#{category}"
end

然后你会得到你正在寻找的路径,例如mens_tshirt_pathmens_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
于 2013-07-28T07:06:52.703 回答
0

您的链接没有重定向到您的实例,而是重定向到您的操作。所以你必须为 new 定义一个新方法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

希望它会有所帮助。谢谢

于 2013-07-28T06:09:44.843 回答