如何更新嵌套的collection_check_box

时间:2014-03-05 13:52:16

标签: arrays ruby-on-rails-4 nested-forms

我有一个孩子的表单(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会做两件不受欢迎的事情:

  1. 它不预先填充属性(例如传统复选框中的.include?(attribute)),并且
  2. 根据数据库中存在多少categorization个记录,重复N次复选框(例如,如果Project#1有三个分类记录,则整个复选框集将在编辑中显示三次形式)。
  3. 我无法弄清楚如何解决这个问题,所以非常感谢任何帮助!

0 个答案:

没有答案