rails 独学して軽くにちゃんまとめつくる

読者です 読者をやめる 読者になる 読者になる

undefined method `each' for nil:NilClass こんなエラーがでた。

f:id:mooooooooooriiiiii:20170203104506p:plain

 

別に each でなくとも、 'id' とか 'name' とかがある。

これはエラーに書いてあるように、@microposts の箇所でエラーがでてる。@user.id とか、 @book.title のようにしたときにエラーが出た人もいるだろう。

これはコントローラーで @microposts を定義してないからだ。もしくは間違って定義しているかのどちらか。だからエラーには for nil:NilClass と書かれている。@microposts が空なんだ。

 

ためしに、@microposts を使っている部分をすべてコメントアウトして、

<%= @microposts.nil? %>

という @microposts が空なら true で入ってたら false を返すような nil メソッドを後ろにくっつけてみると案の定

 

f:id:mooooooooooriiiiii:20170203105220p:plain

 

 

true とでた。そこで、コントローラーで定義しなおすと

 @microposts = Micropost.find_by(id: params[:id])

 

f:id:mooooooooooriiiiii:20170203105524p:plain

 

エラーが消えた。まだなにも投稿していないから、何も表示されないが、これでエラーがなくなる。