Admin Page Ruby on Rails

问题描述:

我创建了一个基于Pundit作为枚举的3个不同角色的网站,用户可以是分析师,开发人员或管理员。Admin Page Ruby on Rails

我有一个控制器系统与一个动作,users_list

def users_list 
    @users = User.order(:id).page params[:page] 
    authorize @users 
end 

而波纹管是我的看法。 高清users_list @users = User.order(:ID)。第PARAMS [:页面] 授权@users 结束

<%- model_class = User -%> 
<div class="page-header"> 
    <h1><%=t '.title', :default => model_class.model_name.human.pluralize.titleize %></h1> 
</div> 
<table class="table table-striped"> 
    <thead> 
    <tr> 
     <th><%= model_class.human_attribute_name(:id) %></th> 
     <th><%= model_class.human_attribute_name(:email) %></th> 
     <th><%= model_class.human_attribute_name(:role) %></th> 
     <th><%= model_class.human_attribute_name(:created_at) %></th> 
     <th><%=t '.actions', :default => t("helpers.actions") %></th> 
    </tr> 
    </thead> 
    <tbody> 
    <% @users.each do |user| %> 
     <tr> 
     <td><%= link_to user.id, edit_user_registration_path(user) %></td> 
     <td><%= user.email %></td> 
     <td><%= user.role %></td> 
     <td><%=l user.created_at %></td> 
     <td> 

      <%= link_to t('.destroy', :default => t("helpers.links.destroy")), 
         cancel_user_registration_path(user), 
         :method => :delete, 
         :data => { :confirm => t('.confirm', :default => t("helpers.links.confirm", :default => 'Are you sure?')) }, 
         :class => 'btn btn-xs btn-danger' %> 
     </td> 
     </tr> 
    <% end %> 
    </tbody> 
</table> 

<%= link_to t('.new', :default => t("helpers.links.new")), 
      new_user_registration_path, 
      :class => 'btn btn-primary' %> 

我想知道的是我怎么可以在这个页面允许管理员改变用户的角色。

所以,我发现我的问题的解决, 我创建了一个新的动作上的用户控制器

class UsersController < ApplicationController 

    def update 
    @user = User.find(params[:id]) 
    authorize @user 
    if @user.update_attributes(secure_params) 
     redirect_to controle_sistema_users_list_path, :success => 'User updated' 
    else 
     redirect_to controle_sistema_users_list_path, :alert => 'Unable to update user' 
    end 
    end 

    private 
    def secure_params 
    params.require(:user).permit(:role) 
    end 
end 

而在users_list页

<td> 
    <%= form_for(user) do |f| %> 
    <%= f.select(:role, User.roles.keys.map {|role| [role.titleize,role]}) %> 
    <%= f.submit 'Change Role', :class => "btn btn-default btn-xs" %> 
    <%end%> 
</td> 
创造了一个TD元素中的表单