在Ruby on Rails中显示类别和子类别名称

时间:2015-03-22 04:02:27

标签: ruby-on-rails ruby categories displayobject sales

我想在标题中显示确切的子类别和类别名称。我尝试了一切,但仍然无法找到解决方案。当我点击一个子类别名称时,我在子类别控制器中,当我点击一个类别名称时,我在类别控制器中。根据我的标题必须显示相应的类别和子类别。这是我的子类别控制器show action。

def show
  @subcategories = Subcategory.friendly.find(params[:id])
  @products = @subcategories.products.where(approved: true)
  @subcategories= Subcategory.all
  @categories= Category.all
  @products = Product.order(:name).page params[:page]
end

这是我的类别控制器节目动作

def show
  @categories = Category.friendly.find(params[:id])
  @products = @categories.products.where(approved: true)
  @categories= Category.all
  @subcategories= Subcategory.all
end

这是我的show.html.erb文件,就像我尝试显示类别和子类别一样。

<li><a href="#" title=""><%= @categories.name%></a></li>
<li><a href="#" title=""><%= @subcategories.name %></a></li>

这是我的products.rb对应代码段

class Product < ActiveRecord::Base
  belongs_to :category
  belongs_to :subcategory

目前显示为

类别&gt;单击子类别时的子类别。你能建议一种方法吗?

PS:这适用于类似ebay的应用程序。

1 个答案:

答案 0 :(得分:0)

我不确定您在这里尝试做什么,但我想我理解您尝试构建的基本结构:您点击一个类别并显示所有子类别对于该类别,当您单击子类别时,您将获得该子类别中的所有产品。

如果是这样,可以这样完成:

分类控制器:

def index # Give the view all categories to list
  @categories = Category.order("created_at DESC")
end

 def show
   @category = Category.find(params[:id])
 end

分类视图:

#Links to each category
<li><%=link_to(@category.name, category_path)%></li>

子类别控制器:

# This will be identical to the products controller snippet,
# but obviously change subcategory to product

def index # Give the view subcategories of the category to list
  @subcategories = Subcategory.order("created_at DESC")
end

 def show # This path will display a single subcategory
   @subcategory = Subcategory.find(params[:id])
 end

子类别视图:

<h3><%= @subcategory.name %></h3> #Display the subcategory name as title
<% @subcategory.products.each do |product| %> # Access each product related to the subcategory
   <li><%=link_to(product.title, post_path(product))%></li> # Create a link, the name of the product, to the individual product
   <li><%= product.description %></li> # Description or whatever you put here.
<% end %>

如果您正在按照我的想法行事,这可能就是您正在寻找的。在这里,我假设每个子类别属于一个类别,这可能不是您计划的方式 - 这很好,但通常只是如何设置网站。如果您想要多个类别和子类别关联,您可能会考虑使用标签,并且可能希望重新考虑您的结构。

无论哪种方式,您都会向控制器(在您的原始帖子中)提供过多信息。如果您有子类别或类别ID,则可以通过@category = Category.find(params[:id])等找到与其关联的产品。您还可以使用该产品显示所有类别/子where。同样,我建议在类别/子/产品之间进行简单的线性关联,因为这样可以使事情变得更容易和更直观,并且允许您对上面的子类别和产品执行操作,即:subcategory.products.each。< / p>

希望这有帮助,祝你好运!