如何使用Rails 3 cookie和helper ?



我创建了一个用户并将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'

控制器在这里

相信这句话

@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])

在你的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为nil。我认为你应该用@user.id代替。

试试这个:

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

注意cookies前的*。

,是的,正如@nash指出的,user_id实际上应该是user.id
我没有费心去查找错误,因为你说你可以在你的机器上看到cookie。

最新更新