Ответ 1
Использовали ли вы устройство перед фильтром в контроллере?
before_filter :authenticate_user!
У меня это на мой взгляд:
<% 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 />
Почему помощник не работает?
Использовали ли вы устройство перед фильтром в контроллере?
before_filter :authenticate_user!
Не уверен, что стоит за user_signed_in? метод, ваш логин работает неправильно или ваш метод нарушен.
Возможно, попробуйте это, если это не сработает, я бы посмотрел, что происходит с фактическим логином.
<%unless current_user.blank? -%>
signed in
<%else -%>
not signed in
<%end-%>
Убедитесь, что вы используете правильную модель. Например, если ваша модель является членом, вы должны использовать member_sign_in
вместо user_sign_in
.
Если логин работает правильно, это может быть связано с каким-то кешированием?
Это может быть возможным объяснением.
Возможно, у вас есть уже существующий метод current_user
, который останавливает Devize current_user
, вызванный внутри user_signed_in?
, от возвращаемых ожидаемых значений.
Я столкнулся с одной и той же проблемой и решил ее сделать $bundle exec rails g devise user
снова. Моя проблема была devise_for users
как-то отсутствовала в файле маршрутизации.