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]
我正在使用基于 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]