Ruby on Rails - 语法问题导致我最终拥有nullPointerExceptions

时间:2012-04-18 15:09:31

标签: ruby-on-rails ruby

我收到此错误:

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

谢谢!

2 个答案:

答案 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"}}