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