不能在视图中显示我的类别和子类别导轨4(Can't display my category

2019-10-22 13:55发布

我的网站有类别和子类别,这里是我在我的seeds.rb,在那里,我创建了一个名为“视频和动画”主类别和子类别4,比我分配到子类的主要类别。

@category = Category.create!(name:  "Video and animation")

["Intro", "Animation & 3D", "Editing and Post Production", "Other"].each do |name|

@subcategory = Subcategory.create!(name: name, category_id: @category.id)

end

它运作良好,在我的rails控制台我看到一切正常,该CATEGORY_ID的增值产品变为一个数字(整数,因为它应该)。

问:我如何显示我的意见的范畴,所以,当有人点击,他获得该类别的所有产品。 我如何显示所有遵循相同的原则的子类别。 这里是我试图把我的看法

<% Category.all.each do |category| %>
  <%= link_to category.name, gigs_path(category: category.name) %>
<% end %>
<% Subcategory.all.each do |subcategory| %>
  <%= link_to subcategory.name, gigs_path(subcategory: subcategory.name) %>
<% end %>

奇怪的是,当我把我的产品控制器,该

def index
      @category_id = Category.find_by(name: params[:category])
      @gigs = Gig.where(category_id: @category_id).order("created_at DESC")
      @subcategory_id = Subcategory.find_by(name: params[:subcategory])
      @gigs = Gig.where(subcategory_id: @subcategory_id).order("created_at DESC")
  end 

这表明只有所需的子目录,我想,但主要类别仍然是空的。 如果我把这个,而不是在我的控制器

def index
      @category_id = Category.find_by(name: params[:category])
      @subcategory_id = Subcategory.find_by(name: params[:subcategory])
      @gigs = Gig.where(category_id: @category_id).order("created_at DESC")
  end

主要类别的作品,如必需的,但子类别保留为空。

注:在这两种情况下,在视图中,任何人点击任何东西之前,我看到正确的类别和子类别显示。

以下是我在每个3款

class Category < ActiveRecord::Base
  has_many :subcategories
end

class Subcategory < ActiveRecord::Base
  belongs_to :category
  has_many :products
end

class Product < ActiveRecord::Base
  acts_as_votable
  belongs_to :user
  belongs_to :subcategory
  has_attached_file :image, :styles => { :medium => "300x300>" }
  validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
end

感谢您的时间。

Answer 1:

在控制器动作

@categories = Category.includes(:subcategories)

添加在意见

<% @categories.each do |category| %>
     <%= link_to category.name, gigs_path(category: category.name) %>
     <% category.subcategories.each do |subcategory| %>
          <%= link_to subcategory.name, gigs_path(subcategory: subcategory.name) %>
     <% end %>
<% end %>

更改索引方法控制器

def index
    if params[:category]
        c_id = Category.find(name: params[:category])
        @gigs = Gig.where(category_id: c_id).order("created_at DESC")
    elsif params[:subcategory]    
        subc_id = Subcategory.find(name: params[:subcategory])
        @gigs = Gig.where(subcategory_id: subc_id).order("created_at DESC")
    end    
end


文章来源: Can't display my category and subcategory in the views Rails 4