我创建了一个用户并将id存储在永久cookie中:
def save_user_id_cookie
cookies.permanent.signed[:user_id] = @user_id
end
这是link。
然后尝试访问它:
helper_method :current_user
private
def current_user
@current_user = @current_user || User.find(cookies.signed[:user_id])
end
这是link。
我在我的机器上看到了cookie但是当我尝试加载主页时,我得到了:
Couldn't find User without an ID
app/controllers/application_controller.rb:8:in `current_user'
控制器为here。
答案 0 :(得分: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])
答案 1 :(得分: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
代替。
答案 2 :(得分:0)
试试这个:
@current_user = @current_user || User.find(*cookies.signed[:user_id])
注意cookie之前的*。
是的,正如@nash
所指出的那样,user_id
实际应该是user.id
。
我没有费心去寻找错误,因为你说你可以在你的机器上看到cookie。