Ссылка на панель администратора в представлении

0

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

У меня есть метод 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 в помощника?
  • 0
    Извините, но не могли бы вы быть более конкретным? Я новичок в рельсах.
Показать ещё 1 комментарий
Теги:
activeadmin

3 ответа

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. Обновил мой ответ выше.
Показать ещё 1 комментарий
2

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

helper_method :current_admin_user
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
    Я изменил свой ответ; попробуйте обновленный код.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню