如何在Rails 4复选框中标记为关联值,并且具有多对多关联

时间:2014-12-08 08:52:26

标签: ruby-on-rails ruby forms checkbox

我正在创建用户ACL我有两个模型,一个是users_group,另一个是access_sections。 现在让我们知道我有2个access_sections(页面,用户) 我想将access_sectionsusers_group相关联, 现在我已经做了 我创建了多对多关联,添加了新的连接表access_sections_user_groups 每当我添加新用户组我传递实例变量以获取所有可用的access_sections时,我将它们显示为新用户组表单中的复选框,一旦我检查任何访问部分,我在数组中循环并插入'table {{中的所有元素1}}'access_sections_user_groups id和users_group id现在一切正常,我想在编辑用户组时执行此操作,如果特定access_sections与user_group关联,则应检查我的复选框

user_group_controller.rb

access_sections

USER_GROUP / _form.html.erb

 def create
 @user_group = UserGroup.new(group_params)


if @user_group.save
  flash[:notice] = "User group added !"
  flash[:type] = "success"

  if params[:user_group][:access_sections].present?
    params[:user_group][:access_sections].each do |f|
      UserGroup.find(@user_group.id).access_sections << AccessSection.find(f)
    end
  end
  redirect_to(:action => "index")
else
  flash[:notice] = "error while adding new group!"
  flash[:type] = "danger"
  render("add_new")
end
end

1 个答案:

答案 0 :(得分:0)

应该工作

f.check_box(:access_section_ids, { :multiple => true }, k.id, nil)

因此,您需要像这样更新模型:

def create
  if @user_group.create(user_group_params)
    # ...
  end
end

def user_group_params
  params.require(:user_group).permit(access_section_ids: [])
end