1

我收到此错误:

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

谢谢!!

4

2 回答 2

1

我不是 Ruby 开发人员.. 但我认为它试图告诉你 .first 需要一个数组,而 any_of 返回其他东西。

于 2012-04-18T15:15:38.277 回答
1

在 login = (params[:user][:login]).downcase 如果你将传递错误的参数又名 {:not_user => {}} 他将尝试从空哈希获取 :login 值,因为没有 :user 哈希.

因此,首先要检查表单中的参数。我打赌这是他们的问题,检查

log/development.log 

您将看到发送到控制器的内容,或者只是简单地放在操作的顶部

raise params.inspect

这是找到参数发生情况的最快方法。

正确的参数应该是这样的

{:user => {:login => "user login ble ble", :password => "ple ple"}}
于 2012-04-18T15:46:31.367 回答