it-roy-ru.com

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 />

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

15
John

Вы использовали devise's before filter в вашем контроллере?

before_filter :authenticate_user!
22
Brian

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

Может быть, попробуйте это, если это не сработает, я бы посмотрел, что происходит не так с реальным входом в систему.

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

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

4
ramez emad

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

1
rohit.arondekar

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

Возможно, у вас уже есть существующий метод current_user, который не дает Devise's current_user, вызываемому внутри user_signed_in?, возвращать ожидаемые значения.

1
Mayank Singh

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

0
cat