Rails devise: user_signed_in? не работает

У меня это на мой взгляд:

<% if user_signed_in? %>
<%= current_user.email %>
<% else %>
<%= link_to "Sign in", new_user_session_path %><br />
<%= link_to "Opret", new_user_session_path %><br />
<% end %>

Но когда вы вошли в систему как пользователь: Я по-прежнему получаю ссылки:

<%= link_to "Sign in", new_user_session_path %><br />
<%= link_to "Opret", new_user_session_path %><br />

Почему помощник не работает?

Ответы

Ответ 1

Использовали ли вы устройство перед фильтром в контроллере?

before_filter :authenticate_user!

Ответ 2

Не уверен, что стоит за user_signed_in? метод, ваш логин работает неправильно или ваш метод нарушен.

Возможно, попробуйте это, если это не сработает, я бы посмотрел, что происходит с фактическим логином.

<%unless current_user.blank? -%>
signed in
<%else -%>
not signed in
<%end-%>

Ответ 3

Убедитесь, что вы используете правильную модель. Например, если ваша модель является членом, вы должны использовать member_sign_in вместо user_sign_in.

Ответ 4

Если логин работает правильно, это может быть связано с каким-то кешированием?

Ответ 5

Это может быть возможным объяснением.

Возможно, у вас есть уже существующий метод current_user, который останавливает Devize current_user, вызванный внутри user_signed_in?, от возвращаемых ожидаемых значений.

Ответ 6

Я столкнулся с одной и той же проблемой и решил ее сделать    $bundle exec rails g devise user снова. Моя проблема была devise_for users как-то отсутствовала в файле маршрутизации.