web-dev-qa-db-ja.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 />

ヘルパーが機能しないのはなぜですか?

16
John

コントローラでデバイスの前にデバイスを使用しましたか?

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のcurrent_userが期待値を返さないようにする既存のuser_signed_in?メソッドがある場合があります。

1
Mayank Singh

私はまったく同じ問題に遭遇し、$bundle exec Rails g devise userをもう一度実行することで解決しました。私の問題は、ルーティングファイルにdevise_for usersが何らかの理由で欠落していたことでした。

0
cat