1. ホーム
  2. ruby-on-rails

[解決済み] nil:NilClass の未定義メソッド `each'... なぜ?

2022-02-11 14:50:41

質問

レイルガイドの例では、投稿を保存するボタンをクリックすると、コンソールにこのようなメッセージが表示されます。

<ブロッククオート

127001 さんの POST "/posts" が開始されました at 2013-12-25 22:42:04 +0800 PostsController#createでHTMLパラメータとして処理中。 {"utf8"=>"✓", "authenticity_token"=>"CLalUww3gqnSlED0AWdou6P/U2qya vPqDiBANQOuYgA=", "post"=>{"title"=>"11", "text"=>"22"} のようになります。 "commit"=>"Save Post"} (0.0ms) begin transaction (0.0ms) トランザクションを開始します。 ロールバックトランザクション http:// 127001:3000/posts にリダイレクトされました。 16ms で 302 Found を完了 (ActiveRecord: 0.0ms)

2013-12-25 22:42:04 +0800 に 127001 の GET "/posts" が開始されました。 PostsController#indexによるHTMLレンダリングとしての処理 レイアウト/アプリケーション内の posts/index.html.erb (15.6ms) 完了 500 内部サーバーエラー 31ms

ActionView::Template::Error (undefined method `each' for nil:NilClass)。

        <th>Text</th>
        </tr>
        <% @posts.each do |post| %>

======================================================

routes は正しいのに、post が nil になっているのはなぜ? rails 4.0.2 ruby 2.0

どうすればいいですか?

投稿コントローラーに @posts このエラーによると、あなたはそうしていないようです。

# app/controllers/posts_controller.rb
class PostsController < ApplicationController
  def index
    @posts = Post.all
  end
end 

として @posts を呼び出すことは定義されていません。 each を生成します。 undefined method nil:NilClass`には'each'を使用します。