我正在第8章研究michal hart的Ruby on rails教程 Click here for details,我在练习8.6中遇到困难。作者介绍了一种在集成测试中访问虚拟remember_token属性的方法,他为我们留下了一些工作,
assert_equal assigns(:user).FILL_IN, FILL_IN
我应该用“FILL_IN”占位符替换正确的代码。我想不出正确的那个。我试过
assert_equal assigns(:user).cookies, remember_token
应用程序/控制器/ sessions_controller.rb
def create
@user = User.find_by(email: params[:session][:email].downcase)
if @user && @user.authenticate(params[:session][:password])
log_in @user
params[:session][:remember_me] == '1' ? remember(@user) : forget(@user)
redirect_to @user
但它不起作用, 误差修改:
"test_login_with_remembering", UsersLoginTest, 0.590876]
test_login_with_remembering#UsersLoginTest (0.59s)
NoMethodError: NoMethodError: undefined method `cookies' for #<User:0x007f964f1a91d0>
我知道这很简单,我实际做了一些研究,似乎没有人问过同样的问题,因为这个教程很新。 请理解我只是一个初学者,如果你能帮助我解决这个问题,我将不胜感激。
答案 0 :(得分:12)
我通过购买迈克尔的书得到了答案。答案包含在解决方案手册中。我认为值得分享,因为我问过这个问题
assert_equal assigns(:user).remember_token, cookies['remember_token']
值得一提的是,阅读ruby语言对于理解这段代码非常有帮助。我的问题是在我参加铁路研究之前我没有做太多关于Ruby的阅读,但这不是一个大问题,我只是转到Ruby开始,以便更深入地了解Ruby语言! 祝你好运
答案 1 :(得分:0)
当我尝试使用@Snailwalker
时出错了 assert_equal assigns(:user).remember_token, cookies['remember_token']
但它的工作原理如下
assert_equal assigns[:user].remember_token, cookies['remember_token']