我有一个孩子的表单(categorization
)嵌套在父表单(project
)中。 categorization
属性是使用collection_check_boxes
帮助程序创建的,如下所示:
<%= f.fields_for :categorizations do |cat| %>
<%= collection_check_boxes :categorization, :category_id, @categories, :id, :display_name %>
<% end %>
在Projects控制器中,我能够成功创建新记录:
def create
@project = Project.new(project_params)
valid_categorizations = params[:categorization][:category_id].reject! { |c| c.empty?}
@project.categorizations.build(valid_categorizations.map{|cat| {category_id: cat}})
...
end
...
def project_params
params.require(:project).permit(:slug, :title, :body, :published, :category_ids => [])
end
现在,当我想编辑父项目记录时,collection_check_boxes
会做两件不受欢迎的事情:
.include?(attribute)
),并且categorization
个记录,重复N次复选框(例如,如果Project#1有三个分类记录,则整个复选框集将在编辑中显示三次形式)。我无法弄清楚如何解决这个问题,所以非常感谢任何帮助!