我如何使用Rails 3 cookie和帮助程序?

时间:2011-04-23 20:47:17

标签: ruby ruby-on-rails-3 cookies helpermethods

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

3 个答案:

答案 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。