如何为 rails 中的关联模型创建连接并在那里创建视图

how to create a join for associated models in rails and also create there view

我正在构建一个电子商务应用程序,我有一个产品模型和一个类别 model.as 下面

class Product
  belongs_to :category
end

类别模型:

class Category
  has_many :products
end

在我看来,在创建产品时,我有一个 select 框,我可以从中选择一个类别。我的问题是我必须根据类别显示产品,例如"Laptop"、"Mobile" 等。由于加入在 mongoid 中不起作用,我应该如何显示基于类别的产品,例如在笔记本电脑类别上,我必须显示类别为笔记本电脑的所有产品。请帮助我,我是 Rails 的新手,尤其是 mongoid。

编辑:

我认为类别没有通过 select 框保存在我的产品中。

我的创建方法:

class ProductsController < ApplicationController

  def create
    @product = current_user.products.build(product_params)

    @categories = Category.all

    respond_to do |format|
     if @product.save
        format.html { redirect_to @product, notice: 'Product was  successfully created.' }
        format.json { render :show, status: :created, location: @product }
      else
        format.html { render :new }
        format.json { render json: @product.errors, status:  :unprocessable_entity }
      end
    end
  end

  def product_params
    params.require(:product).permit(:user_id, :name,  :description,:avatar,:prize,:category_id)
  end 
end

我对产品的看法

<%= form_for @product, :html => {:multipart => true} do |f| %>
  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>
  <div class="field">
     <%= f.label :prize %><br>
     <%= f.text_field :prize %>
  </div>
  <div class="field">
    <%= f.label :Select_Category %><br>
    <%= f.select :category_id, @categories.map{ |c| [c.name, c.id] } %>
  </div>
  <div class="field">
    <%= f.label :avatar %><br>
    <%= f.file_field :avatar %>
  </div>
  <div class="field">
    <%= f.label :description %><br>
    <%= f.text_area :description %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

我应该在控制器中添加什么才能在产品中保存类别?

尝试使用 includes 摆脱 [N+1] 个查询:

category = Category.includes(:products).find_by(type: 'Laptop')

products = category.products