在application.html导航Ruby on Rails中显示所有属于category_to类别ID的产品

时间:2018-09-30 10:35:52

标签: ruby-on-rails

尝试动态链接到我的application.html导航中属于category_id的所有产品名称。

application_controller.rb

class ApplicationController < ActionController::Base
    before_action :set_products
    before_action :set_categories
    rescue_from CanCan::AccessDenied do |exception|
    redirect_to main_app.root_url, alert: exception.message
end

  private
  # Use callbacks to share common setup or constraints between actions.
  def set_products
    @products = Product.all
  end

  def set_categories
    @categories = Category.all 
  end
end

product.rb

belongs_to :category

category.rb

has_many :products

application.html.erb

<% @products.each do |product| %>
 <%= link_to product.name, product, class: "link-item nav-link roll", src: url_for(product.header_image) %>
<% end %>

我可以在导航中分别显示所有产品名称或所有类别名称,但不能分别显示特定类别的每个产品的名称。

任何帮助都会很棒。

谢谢

1 个答案:

答案 0 :(得分:0)

您需要遍历category.productscategory.products将返回给您属于某个category的所有产品模型。

尝试:

<% @categories.each do |category| %>
 <% category.products.each do |product| %>
   <%= link_to product.name, product, class: "link-item nav-link roll", src: url_for(product.header_image) %>
  <% end %>
<% end %>

检查活动记录关联documentation,以查看在has_manybelongs_to关联引用的情况下可以使用的所有与关联有关的方法。