我有三个模型,分别称为 Product、Category 和 Categorization。
产品型号:
attr_accessible :title, :description, :price, :image_url
has_many :categorizations
has_many :categories, :through => :categorizations
类别型号:
attr_accessible :name
has_many :categorizations
as_many :products, :through => :categorizations
分类模型:
attr_accessible :category_id, :product_id
belongs_to :category
belongs_to :product
创建产品模型时如何创建分类对象?我在新产品表单中添加了类别选择。
基本上,当它创建新产品对象时,我想推入 product_id 和选定的 category_id 并创建一个新的分类对象,以便我可以将产品与类别相关联。
_form.html 用于新产品:
<div>
<%= f.label :title %>:<br />
<%= f.text_field :title %><br />
</div>
<div>
<%= f.label :description %>:<br />
<%= f.text_area :description, :rows => 6 %>
</div>
<div>
<%= f.label :price %>:<br />
<%= f.text_field :price %><br />
</div>
<div>
<%= f.label :image_url %>:<br />
<%= f.text_field :image_url %><br />
</div>
<% @categories.each do |category| %>
<div>
<% f.fields_for :categorization do |builder| %>
<%= render 'categorization_fields', :f => builder, :product => @product, :category => category %>
</div>
<% end %>
<% end %>
产品控制器:
def index
@products = Product.all
end
def new
@category = Category.all
@product = Product.new
@categories = @category.find(params[:category])
categorization = @product.categorizations.build
end
def create
@product = Product.new(params[:product])
if @product.save
redirect_to products_path
else
render :new
end
end
def edit
@product = Product.find(params[:id])
end
def update
@product = Product.find(params[:id])
if @product.update_attributes(params[:product])
redirect_to @product
else
render :edit
end
end
def show
@product = Product.find(params[:id])
end
def destroy
@product = Product.find(params[:id])
@product.destroy
redirect_to products_path
end
end
我无法在产品模型中使用 Accepts_nested_attributes_for 像这样工作。
任何帮助,将不胜感激。