2015-11-04 58 views
-1

我創建了一個基於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' %> 

我想知道的是我怎麼可以在這個頁面允許管理員改變用戶的角色。

回答

0

所以,我發現我的問題的解決, 我創建了一個新的動作上的用戶控制器

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元素中的表單