在我的 Rails 应用程序表单中,我有以下用于多选的代码:
<div class="field">
<%= f.label :frameworks %><br />
<%= f.collection_select :framework_ids, Framework.all, :id, :name, {}, {:multiple => true} %>
</div>
它在创建时运行良好,并且在编辑视图中正确显示了先前选择的框架。
但是当我提交一些其他更新的字段时,它会重复我数据库中的框架条目。
例如,如果我选择了“framework1”、“frameworks2”,更新后我在数据库“framework1”、“frameworks2”、“framework1”、“frameworks2”中,如果我再更新一次:“framework1”, “框架 2”、“框架 1”、“框架 2”、“框架 1”、“框架 2”。
那么我应该怎么做才能预防呢?
编辑: 控制器在这里:
@component = Component.find(params[:id])
respond_to do |format|
if @component.update_attributes(params[:component])
@component.update_attribute(:numImages, @component.assets.size)
@component.save
format.html { redirect_to @component, notice: 'Component was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @component.errors, status: :unprocessable_entity }
end
end
结尾
顺便说一句,像我一样更新 :numImages 是否正确?