2014-01-18 68 views
0

我已經有了Active Admin全部設置,現在我試圖在我的視圖中添加指向控制板的鏈接。鏈接到視圖中的管理控制檯

我在application_controller的current_admin_user方法:

def current_admin_user 
    return nil if user_signed_in? && !current_user.admin? 
    current_user 
end 

而我的看法是:

<% if current_admin_user %> 
    <li><%= link_to "Admin", admin_path %></li> 
<% end %> 

但是我得到的錯誤:

undefined local variable or method `current_admin_user' 

任何人知道如何解決這個問題?

+0

爲什麼不把current_admin_user函數放到幫助器中呢? – Pierre

+0

對不起,但你能更具體嗎?我對軌道很陌生。 –

+0

我認爲這段代碼更適合放入幫手,請參閱下面的答案。 – Pierre

回答

1

將函數放入/ helper文件夾中的application_helpers.rb文件中它應該工作

def current_admin_user 
    return nil if user_signed_in? && !current_user.admin? 
    current_user 
    end 

另一種方法是使用if user_signed_in? & & current_user.admin?在您的角度來看

<% if user_signed_in? && current_user.admin? %> 
    <li><%= link_to "Admin", admins_path %></li> 
    <% end %> 
+0

現在我收到以下錯誤:未定義的本地變量或方法'admin_path' –

+0

我的猜測應該說admins_path而不是單一的admin_path。上面更新了我的答案。 – Pierre

+1

我不認爲存在admins_path或admin_path。在我映射路線後,我嘗試了'admin_dashboard_path',它工作。 –

1

這應該工作:

<% if user_signed_in? %> 
<% if current_admin_user? %> 
<li><%= link_to "Admin", admin_path %></li> 
<% end %> 
<% end %> 

如果失敗嘗試:

<% if user_signed_in? %> 
<% if current_user.admin? %> 
<li><%= link_to "Admin", admin_path %></li> 
<% end %> 
<% end %> 
+0

在這兩個我得到一個未定義的方法錯誤。 –

+0

我修改了我的答案;嘗試更新的代碼。 – Aluxzi

+0

而不是兩條線,你可以結合兩個如果我的答案如下語句。 – Pierre

2

如果你想使用視圖控制器方法,你應該在你application_controller加入這一行:

helper_method :current_admin_user