我试图通过Categorizations模型将Products控制器中的关系设置为ClothingSize模型。我得到一个"未经许可的参数:clothing_size"错误,结果永远不会产生关系。我认为视图中的嵌套表单有问题,因为我无法得到"尺寸"除非符号如下所示,否则将出现字段。我认为这可能指向另一个问题。
<%= form_for(@product) do |f| %>
<%= f.fields_for :clothing_size do |cs| %>
模型
产品
class Product < ActiveRecord::Base
has_many :categorizations
has_many :clothing_sizes, through: :categorizations
accepts_nested_attributes_for :categorizations
end
分类已
class Categorization < ActiveRecord::Base
belongs_to :product
belongs_to :clothing_size
accepts_nested_attributes_for :clothing_size
end
ClothingSizes
class ClothingSize < ActiveRecord::Base
has_many :categorizations
has_many :products, through: :categorizations
accepts_nested_attributes_for :categorizations
end
产品控制器
def new
@product = Product.new
test = @product.categorizations.build
def product_params
params.require(:product).permit(:title, :description, :image_url, :image_url2, :price, :quantity, :color, :clothing_sizes => [:sizes, :clothing_size_id])
end
end
查看
<%= form_for(@product) do |f| %>
<%= f.fields_for :clothing_size do |cs| %>
<div class="field">
<%= cs.label :sizes, "Sizes" %><br>
<%= cs.text_field :sizes %>
</div>
<% end %>
<% end %>
答案 0 :(得分:2)
在您看来,您有:clothing_size
(单数),但在product_params
方法中,您有:clothing_sizes
(复数)。由于您的Product
模型has_many :clothing_sizes
,您希望它在您的视图中为复数。
<%= form_for(@product) do |f| %>
<%= f.fields_for :clothing_sizes do |cs| %>
此外,您还希望为控制器中的clothing_size
构建product
,并允许:clothing_sizes_attributes
而不是clothing
大小product_params
1}}方法。 (我将new
和product_params
方法分开,将product_params
设为私有,但这仅仅是我。)
def new
@product = Product.new
@clothing_size = @product.clothing_sizes.build
end
private
def product_params
params.require(:product).permit(:title, :description, :image_url, :image_url2, :price, :quantity, :color, :clothing_sizes_attributes => [:sizes, :clothing_size_id])
end