Rails 4:通过 UI 使用 Rolify 分配角色 Gem

Rails 4: Assigning Roles via UI Using Rolify Gem

我正在使用基于 Devise、CanCanCan 和 Rolify 的应用程序来处理私有资源。

使用 Rolify (https://github.com/RolifyCommunity/rolify) 为用户分配不同的角色。

我想授予网络管理员访问权限,然后他可以通过 UI.

将多个角色分配给用户

用户控制器:

def update
@user = User.find(params[:user_id])

params[:user][:role_ids] ||= []

if @user.update_attributes(params[:user_id])
  redirect_to users_path, :flash => { :success => 'User was successfully updated.' }
else
  redirect_to users_path, :flash => { :error => 'User was unsuccesfully updated.' }
end

结束

查看:

可通过路线访问:

get "users/:user_id/edit" => 'user#edit', :as => :edit_user

HTML:

<%= form_for @user do |f| %>
  <% Role.all.each do |role| %>
    <%= check_box_tag "user[role_ids][]", role.id, @user.role_ids.include?(role.id) %>
    <%= role.name %><br />
  <% end %>
  <%= f.submit %>
<% end %>

路线:

match "users/:user_id" => 'user#show', via: [:get], :as => :user

但是,当我单击 "Update User" 时,出现以下错误:

知道如何解决这个问题以使我的表单正常工作吗?

您有通往 show 操作的路线,可通过 get 访问。您还应该有一条通往 update 操作的路线,可通过 patch 访问。您可以使用 resources:

轻松实现此目的
resources :users, only: [:show, :update, :edit]