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

in login = (params[:user][:login]).downcase 間違ったパラメーター別名 {:not_user => {}} を渡すと、:user ハッシュがないため、null ハッシュから :login 値を取得しようとします。 .

したがって、最初にフォームからパラメーターを確認する必要があります。私はそれが彼らに問題があるに違いない、チェックしてください

log/development.log 

コントローラーに送信されたものが表示されるか、単にアクションの一番上に配置されます

raise params.inspect

これは、params で何が起こっているかを見つけるための最速の方法です。

正しいパラメータは次のようになります

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