我想在标题中显示确切的子类别和类别名称。我尝试了一切,但仍然无法找到解决方案。当我点击一个子类别名称时,我在子类别控制器中,当我点击一个类别名称时,我在类别控制器中。根据我的标题必须显示相应的类别和子类别。这是我的子类别控制器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的应用程序。
答案 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>
希望这有帮助,祝你好运!