0

ユーザーを作成し、IDを永続的なCookieに保存しました。

def save_user_id_cookie
  cookies.permanent.signed[:user_id] = @user_id
end

ここにリンクがあります。

次に、それにアクセスしてみます。

helper_method :current_user

private
def current_user
  @current_user = @current_user || User.find(cookies.signed[:user_id])
end

ここにリンクがあります。

マシンにCookieが表示されますが、ホームページを読み込もうとすると、次のように表示されます。

Couldn't find User without an ID

app/controllers/application_controller.rb:8:in `current_user'

コントローラはこちらです。

4

3 に答える 3

1

この行を信じて

@current_user = @current_user || User.find(cookies.signed[:user_id])

する必要があります

@current_user = @current_user || User.find(cookies[:user_id])

*補足:少し少ないコードで、次のように割り当ててみることができます

@current_user ||= User.find(cookies[:user_id])
于 2011-04-23T21:03:54.220 に答える
1

あなたのsave_user_id_cookie

def save_user_id_cookie
    cookies.permanent.signed[:user_id] = @user_id # may be @user.id?
    puts 'saved cookie'
end

@user_idゼロです。@user.id代わりに使うべきだと思います。

于 2011-04-23T21:08:28.520 に答える
0

これを試して:

@current_user = @current_user || User.find(*cookies.signed[:user_id])

Cookieの前の*に注意してください。

そして、はい、@nash指摘されたように、それuser_idは実際にあるはずuser.idです。
あなたがあなたのマシンでクッキーを見ることができるとあなたが言ったので、私はそこでエラーを探すことを気にしませんでした。

于 2011-04-23T21:05:26.327 に答える