使用 Role Model 和 simple_forms 分配角色
Using Role Model and simple_forms to assign roles
首先,我正在使用 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 %>
这正确显示了复选框,最后一部分将一个标记为 true。我不确定如何让它标记应该标记的角色。我随机选择了一个进行测试 另外,如果我发送它进行更新,似乎什么也没有发生。我更新了,就像我通常将我的参数限制为 roles_mask 变量一样。
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
我不知道我做错了什么。即使我能让他们更新。不显示当前角色并不是什么大问题。
您不需要直接访问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: [])
首先,我正在使用 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 %>
这正确显示了复选框,最后一部分将一个标记为 true。我不确定如何让它标记应该标记的角色。我随机选择了一个进行测试 另外,如果我发送它进行更新,似乎什么也没有发生。我更新了,就像我通常将我的参数限制为 roles_mask 变量一样。
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
我不知道我做错了什么。即使我能让他们更新。不显示当前角色并不是什么大问题。
您不需要直接访问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: [])