2014-01-18 40 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