如何为 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
我正在构建一个电子商务应用程序,我有一个产品模型和一个类别 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