2014-01-18 4 views
0

У меня уже установлен Active Admin, и теперь я пытался добавить ссылку на панель инструментов на мой взгляд.Ссылка на Admin Dashboard in View

У меня есть метод current_admin_user в моем application_controller:

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

Включите функцию в свой файл application_helpers.rb в папку/helpers и он должен работать

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

Альтернативой является использование если 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

Вместо двух строк вы можете объединить оба оператора if, как мой ответ ниже. – Pierre

2

Если вы хотите использовать методы контроллера в представлениях, вы должны добавить эту строку в application_controller:

helper_method :current_admin_user