質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.68%
Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

2回答

46058閲覧

エラーfor nil:NilClassについて

ShoTakigasaki

総合スコア18

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

2グッド

5クリップ

投稿2014/11/28 06:58

railsのエラーにおいて、
undifined method error for nil:NilClass
というエラーがあると思います。

for以下がnil:nilclassではなくファイル名などだった場合は対象ファイルにメソッドを定義したりして解決してきました。
しかし、このような場合はどこに定義すれば良いか、そもそも定義すべきなのか?
(今回はeach methodがエラーの対象となってしまいました)

変数の未初期化の可能性もあるという記述もネットで見つけたのですが、
変数の未初期化とはinitialize メソッドで変数を初期化するということなのでしょうか。

新しい機能を実装する度にエラーが連発して心が折れそうです、、、

DrqYuto, vitabrevisarsl1👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

guest

回答2

5

ベストアンサー

nil(他の言語ではnullということも多い、「何もない」という特殊なオブジェクトです)に対してメソッドを実行しようとすると、表記のような「NilClassにメソッドがない」旨のエラーになります。

対策としては、nilが来うるところでは、nilかどうかをチェックしてからメソッドを呼ぶというのが適当でしょう。動作上nilが来てはおかしい引数であれば、メソッドに渡す段階でチェックしましょう。

投稿2014/11/28 07:38

maisumakun

総合スコア144198

CodeMate, DrqYuto, hikaru923, vitabrevisarsl1, smallpi138👍を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

回答へのコメント

ShoTakigasaki

2014/11/28 07:44

ご回答ありがとうございます。 今回viewのファイルでエラーが出ていたので、 もしかしてと思いcontrollerを確認してみたところ、 そちらでスペルミスがありました。 (viewにおける@以降の変数名と対応しているcontrollerの@以降の変数名にミスがありました。) このような場合にも質問したようなエラーが出るのですね、 まだまだエラーの原因を探し解決するという経験が不足しているため行き詰まってしまいました。 頑張って開発を続けます。 ありがとうございました!
guest

1

メソッドの戻り値に一般のnilでないオブジェクトを期待して、その返値に対してメソッドを呼び出していたが、実際にはnilが返ってきたというケースがほとんどです。
例えば、データが見つからなかったなど。

つまり考慮漏れです。

投稿2014/11/28 07:45

otn

総合スコア83024

DrqYuto👍を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

回答へのコメント

ShoTakigasaki

2014/11/28 08:10

今回、構築していたviewファイルにある@以降の変数名と viewに対応するcontrollerファイルの@以降の変数名に誤りがありました。 仰る通り、データが見つからなかったのでしょう。 controllerを直したら上手く動作しました。 ありがとうございます。 結構些細なミスだったんですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.68%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

同じタグがついた質問を見る

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。