我有一个用于创建样式的表单。创建样式时,用户还必须为样式选择一些特征。
这些功能已预先填充到表单内的多选框中。保存样式时,应使用表单上选择的每个特征的条目(带有 style_id 和 feature_id)更新直通表。
我的控制器中有:
def new
@style = Style.new
@style.stylefeatures.build
end
def create
@style = Style.new(params[:style])
@style.stylefeatures.build
@style.save
end
...在我的风格模型中
attr_accessible :stylefeatures_attributes
has_many :stylefeatures
has_many :features, :through => :stylefeatures, :foreign_key => :feature_id
accepts_nested_attributes_for :stylefeatures
...在我的风格特征模型中
belongs_to :style
belongs_to :feature
accepts_nested_attributes_for :feature
...在我的特征模型中
attr_accessible :description, :fullname, :name
has_many :stylefeatures
has_many :styles, :through => :stylefeatures, :foreign_key => :style_id
...并以我的创建形式
<%= m.simple_fields_for :stylefeatures do |p| %>
<%= p.input :feature_id, :label => "Features", :collection => Feature.all, :input_html => { :multiple => true } %>
<% end %>
现在,当我保存新样式时,stylefeatures 表将更新为适当的 style_id,但有两个无用的条目。第一个是一个数组,其中包含已在表单中选择的所有特征 ID。第二个是具有适当 style_id 的空白条目,而 feature_id 列中没有任何内容。
您是否知道我可能做错了什么,或者如何根据需要将收集到的 feature_id 散布到表中?