首先,我使用的是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
我不知道我做错了什么。即使我可以让他们更新。没有显示当前角色并不是一件大事。
答案 0 :(得分:0)
您不需要直接访问roles_mask属性,只需为角色数组分配h1= title
属性即可。例如:
roles
并且不要忘记允许强参数的表单值:
= f.input :roles, collection: User.valid_roles, as: :check_boxes, checked: @user.roles, label_method: proc {|l| User.human_attribute_name(l) }