我知道关于这个话题有很多类似的问题,但没有一个答案是相关的。
我决定听从 Michael Hartl 的建议并实现我自己的身份验证代码,而不是使用预定义的包。但是我在 railstutorial 的解决方案中遇到了问题。
我已经直接使用 github 中的教程代码对我的代码进行了双重/三重检查,据我所知,我正在正确实施,但我有一些大问题。
Current_user 未正确启动
助手/sessions_helpers.rb
...
def current_user=(user)
@current_user = user
end
def current_user
#this line of code will change in the tutorial section 9 but its okay for now
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
def signed_in?
!current_user.nil?
end
任何在视图中使用助手的代码<% if signed_in? %>
总是返回 false,即使身份验证已经成功。任何通过用户方法访问数据的尝试都current_user.first_name.capitalize
失败了undefined method ``first_name' for nil:NilClass
请注意,这仍然是教程中的第 8 节(还不是第 9 节,当基础知识不起作用时,我真的不想在这种身份验证情况下添加更多代码。感谢您的帮助...