У меня есть приложение, в котором в макете у меня есть div user_name, который будет отображать разные вещи в зависимости от того, вошли они в систему или нет, администратор и т. Д. Сейчас мой код следующий:
<% if current_user.role == "admin" %>
<p id="admintxt">You are an admin!</p>
<%= link_to "Edit Profile", edit_user_path(:current) %>
<%= link_to "Logout", logout_path %>
<% elsif current_user %>
<%= link_to "Edit Profile", edit_user_path(:current) %>
<%= link_to "Logout", logout_path %>
<% else %>
<%= link_to "Register", new_user_path %>
<%= link_to "Login", login_path %>
<% end %>
У меня уже есть помощник current_user, и все работало нормально, когда код был просто:
<% if current_user %>
<%= link_to "Edit Profile", edit_user_path(:current) %>
<%= link_to "Logout", logout_path %>
<% else %>
<%= link_to "Register", new_user_path %>
<%= link_to "Login", login_path %>
<% end %>
Теперь, когда я делаю это заявление elsif, когда я захожу как администратор, это работает, и я получаю текст, отображаемый с правильными ссылками. Когда я не являюсь пользователем-администратором / вышел из системы, я получаю неопределенный метод `role 'для ошибки nil: NilClass ... Кроме того, мои данные current_user объявлены в контроллере приложения следующим образом:
helper_method :current_user
private
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.record
end
Любые идеи, что я могу сделать, чтобы отобразить результат, который я хочу? «Если они - пользователь с атрибутом роли, равным admin, они получают некоторый текст и ссылки для входа в систему, если они просто пользователь, они получают ссылки для входа в систему, и если они не входят в систему, они получают ссылки для регистрации и входа в систему. .
Спасибо!