我收到此错误:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]
从这一行:
user = User.any_of({:user_name => login},{:email => login}).first #.and(:encrypted_password => nil).first
我是Ruby的新手,所以我仍然试图掌握语法。有什么特别不正确或容易出错会导致我的对象nil []错误吗?
即使我在没有.downcase
的情况下尝试它,以下行也会产生相同的错误login = (params[:user][:login]).downcase
谢谢!
答案 0 :(得分:1)
我不是Ruby dev ..但我认为它试图告诉你.first期望一个数组,any_of返回别的东西。
答案 1 :(得分:1)
在login =(params [:user] [:login])。downcase 如果你将传递错误的params aka {:not_user => {}}他将尝试从null hash获取get:login值,因为没有:user hash。
首先要检查表格中的参数。我打赌这是他们的问题,检查
log/development.log
您将看到发送到控制器的内容,或者只是简单地置于操作顶部
raise params.inspect
这是找到我们用params发生的事情的最快方法。
正确的params你应该看起来像这样
{:user => {:login => "user login ble ble", :password => "ple ple"}}