簡體   English   中英

設計管理員用戶批准設置

[英]devise admin user approval setup

似乎這里的教程有兩個遺漏之處:

  1. 創建管理員訪問控制方法時,他們並不指定哪些定制設計控制器使用,或以繼承其基本控制器。 因此,我將代碼放置在PagesController中:

     class PagesController < ApplicationController def approve_users if current_user.admin? if params[:approved] == "false" @users = User.find_by_approved(false) else @users = User.all end end end end 
  2. 允許您在所有用戶和所有未批准用戶之間切換的視圖代碼會在您選擇顯示其:approved => false undefined method 'each' for UserNoMethodError in Pages@approve_usersundefined method 'each' for User NoMethodError in Pages@approve_users 我知道為什么noMethodErrors會在應用程序開發中興起,並且通常能夠使我神清氣爽地理解為什么收到此錯誤。 的工作原理 ,當@users = User.all ,而不是在@users = User.find_by_approved(false)

     <% if current_user.admin? %> <h2>Users</h2> <%= link_to "All Users", :action => "approve_users" %> | <%= link_to "Users awaiting approval", :action => "approve_users", :approved => "false" %> <div class="ui form"> <table> <thead> <tr scope="col"> <th>First name</th> <th>Last name</th> <th>E-mail</th> <th>Approve</th> </tr> </thead> <% @users.each do |user| %> <tbody> <tr> <td><%= user.firstname %></td> <td><%= user.lastname %></td> <td><%= user.email %></td> <td class="ui checkbox"> <input type="checkbox" tabindex="0" class="hidden"> </td> </tr> </tbody> <% end %> </table> </div> <% end %> 
    1. Wiki表示,它提供了一種批准用戶的簡單方法,但是他們的查看代碼實際上只是提供了列出所有用戶的簡單方法。 我假設我需要使用表單助手。
  1. 我專門為管理控制面板制作了一個自定義管理控制器,並將所有工具放在索引頁面中。 不過,您可能可以通過多種方式來執行此操作。

  2. 對此的普遍共識似乎是,如果將@users = User.find_by_approved(false)切換為@users = User.where(approved:false),則效果更好。 這就是我目前擁有的,並且效果很好。

  3. 我也遇到了這個問題,最終我放棄了設計並制作了自定義用戶登錄方法。 不過,您應該能夠使其工作。 我在這里遵循了該教程,對它有極大的幫助。 基本上,您想創建一種方法來批准您的管理控制器中的用戶。 這是我使用的一個:

`

def approve
User.where(id: params[:user_id]).update_all(approved: true)

  redirect_to admin_index_path
end

從那里,您將put方法添加到路由中。

put 'approve_admin', to: "admin#approve", as: :approve_admin

最后,將您的用戶列表包裝在一個表單標簽中,然后將您要更新的所有用戶ID的哈希添加為哈希。

<%= form_tag(approve_admin_path, method: :put) do %>
   <% for user in @unapproved_users %>
     <tr>
       <td class="mdl-data-table__cell--non-numeric"><%= check_box_tag "user_id[]", user.id %></td>
       <td><%= user.name %></td>
       <td><%= user.email %></td>
       </tr>
       <% end %>
      </tbody>
      </table>
      <%= submit_tag "Mark as approved", class: 'mdl-button mdl-js-button mdl-button--raised approve' %>
   <% end %>

我制定了一種批准用戶的方法,另一種批准用戶的方法,所以我將@ users.each迭代切換為for迭代。 我在索引方法中添加了@unapproved_users,以使其正常工作。 希望這對您有用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM