私の見解ではこれがあります:
<% 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
内で呼び出されたDeviseのcurrent_user
が期待値を返さないようにする既存のuser_signed_in?
メソッドがある場合があります。
私はまったく同じ問題に遭遇し、$bundle exec Rails g devise user
をもう一度実行することで解決しました。私の問題は、ルーティングファイルにdevise_for users
が何らかの理由で欠落していたことでした。