【问题标题】:Using Role Model and simple_forms to assign roles使用角色模型和 simple_forms 分配角色
【发布时间】:2016-01-04 21:56:07
【问题描述】:

首先,我使用的是 Devise、Cancan、Role Model 和 simple_form。一切似乎都可以使用权限等等。我似乎无法做的是创建一个表单,以便我可以为用户分配角色。

这是我目前所拥有的:

<%= simple_form_for(@profile.user) do |f| %>
<%= f.input :roles_mask, as: :check_boxes, collection: User.valid_roles, :checked => [ 'member' , true] %>
<%= f.button :submit %>

这正确显示了复选框,最后一部分将其中一个标记为真。我不确定如何让它标记应该标记的角色。我随机选择了一个进行测试另外,如果我将其发送到更新,似乎什么也没有发生。我更新了,就像我通常会将我的参数限制为仅角色掩码变量一样。

def update
if @user.update(params.require(:user).permit(:roles_mask))
    flash[:notice] = "Permissions updated."
    redirect_to profile_path(@user.profile_id)
else
    render 'edit'
end

我不知道我做错了什么。即使我可以让他们更新。不显示当前角色并不是什么大不了的事。

【问题讨论】:

    标签: ruby-on-rails ruby devise simple-form cancan


    【解决方案1】:

    您不需要直接访问roles_mask 属性,只需将roles 属性分配给角色数组即可。示例:

    = f.input :roles, collection: User.valid_roles, as: :check_boxes, checked: @user.roles, label_method: proc {|l| User.human_attribute_name(l) } 
    

    并且不要忘记为强参数允许该表单值:

    params.require(:user).permit(roles: [])
    

    【讨论】:

      猜你喜欢
      • 2013-04-06
      • 2016-12-12
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 2016-03-18
      相关资源
      最近更新 更多