2012-08-12 103 views
1

我遵循Devise Wiki以創建一個非常基本的管理員設置,通過以布爾格式向我的用戶表中添加一個管理列。Devise Admin rails

我已經進入我的表格(通過SQlite管理員)並且指定我的一個用戶成爲管理員。

我然後在我看來,下面的代碼:

<% if user_signed_in? %> 
    <% if current_user.admin? %> 
    <%= link_to "Admin Job Post", new_user_job_path(current_user.id) %> 
    <% else %> 
    <%= link_to "Post a new job", new_user_job_path(current_user.id) %> 
    <% end %> 
<% else %> 
    <%= link_to "Post a new job", new_user_session_path %> 
<% end %> 

我遇到的問題是,我的應用程序永遠只給我回<%= link_to "Post a new job", new_user_job_path(current_user.id) %>以管理員用戶登錄時也是如此。

這將是很好的解決這個問題,因爲我嘗試了幾個變化,不能得到它的工作。

在此先感謝您的幫助!

+0

您是否確認用戶實際登錄並且current_user.admin?返回true? – PinnyM 2012-08-12 15:05:05

+0

由於所有僅用於登錄成員的元素都顯示,current_user肯定已正確登錄。我將如何檢查current_user.admin?返回true? – 2012-08-12 15:14:24

+0

例如,您可以添加'<%= current_user.admin? ===真的? 「admin」:「農民」%>'。或者設置一個調試器斷點並在控制檯中檢查它。 – 2012-08-12 19:44:37

回答

0

我不確定你的代碼是否完整,但我有類似的設置,但是我用下面的方式顯示一個用戶以管理員身份登錄後的鏈接(由於事實上它不在'user_logged_in'檢查中)。

<% if current_user.try(:admin?) %> 
    <li><a href="#">AdminLink</a></li> 
<% end %> 
0

是否確定要讓用戶成爲管理員? 爲了使用戶管理員,你應該已經運行以下命令

User.find(#id_of_user_you_want_to_make_admin) 
User.admin = true 
User.save! 
0
<% if current_user.present? && current_user.has_role?(:admin) %> 
    <li><%= link_to 'Some Cool Admin Feature', cool_admin_path %></li> 

這是你在找什麼,如果你使用Rails 4設計2.x版本注意()周圍:管理員是沒有必要的,我把它們包括在內,作爲'?'在該方法似乎拋出了對ruby陌生的人之後。

0

給予管理員權限的另一種方法是簡單地使用<% if current_user.try (:email) == "[email protected]" %>這對我來說總是有效。這樣你就不必擔心整個系統。