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

时间:2015-03-30 06:23:34

标签: ruby-on-rails ruby ruby-on-rails-4 devise

我使用基于Devise,CanCanCan和Rolify的应用来处理私人资源。

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

我希望能够访问网络管理员,然后他可以通过用户界面为用户分配多个角色。

用户控制器:

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 %>

enter image description here

路线:

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

但是,当我点击&#34;更新用户&#34;时,我收到以下错误:

enter image description here

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

1 个答案:

答案 0 :(得分:2)

您有show行动的路线,可通过get访问。您还应该有update行动路线,可通过patch访问。您可以使用resources

轻松完成此操作
resources :users, only: [:show, :update, :edit]
相关问题