0

私は Railstutorial.org のチュートリアルに取り組んでおり、テストに合格して第 8 章を完了しました。私の問題は、ガイドのコードに正確に従うと、ログインできますが、ログアウトできないことです。

「ログアウト」をクリックすると、root_path にリダイレクトされますが、ログインしたままです。

セッションヘルパーの動作をたどったと思います。具体的には、次の行:

  def current_user
    @current_user ||= User.find_by_remember_token(cookies[:remember_token])
  end

Rails コンソールと pry を介して、cookie[:remember_token] が nil であると判断できましたが、私のユーザーの remember_token も nil であるため、find_by_remember_token は「ねえ nil == nil! すばらしい! ユーザーを見つけました!」と言っています。これが明らかに望ましくない動作であることを除いて。

current_user メソッドを次のように変更して修正しました。

  def current_user
   @current_user ||= cookies[:remember_token] && User.find_by_remember_token(cookies[:remember_token])
  end

これは私のコードのエラーである可能性が高いことを完全に受け入れ、理解しています。プロジェクトのこの時点から Michael Hartl のコミットを見つけ、ファイルを比較しましたが、矛盾は見つかりませんでした。ここで何が起こっているのかについてのアイデアはありますか?

お時間をいただきありがとうございます。

4

1 に答える 1

-1

これをあなたの中に入れてください...

コントローラ:

def logout
   reset_session
   redirect_to :controller => 'classified', :action => 'list'
end

そしてあなたの見解では:あなたはログアウトリンクを追加する必要があります。

<% else %>
    <p><%= "Welcome #{session[:user].login}!" -%></p>
    <p><%= link_to 'Logout', :controller => 'user',:action => 'logout' -%></p>
<% end %>
于 2012-12-18T07:31:10.903 に答える