1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み】 nil:NilClass に対して未定義のメソッド `each' がある...なぜ?

2022-01-12 19:53:23

質問

ボタンをクリックすると投稿が保存される機能を実装しようとしています。

<ブロッククオート

POST "/posts" for 127001 at 2013-12-25 22:42:04 +0800 Processing by PostsController#create as HTML Parametersを開始しました。{"utf8"=>"✓", "authenticity_token"=>"CLalUww3gqnSlED0AWdou6P/U2qya vPqDiBANQOuYgA=", " post"=>{"title"=>"11", "text"=>"22"}, "commit"=>"Save Post"} (0.0. 0ms) begin transaction (0.0ms) rollback transaction Redirected to http:// 127001:3000/posts Completed 302 Found in 16ms (ActiveRecord: 0.0ms)

Started GET "/posts" for 127001 at 2013-12-25 22:42:04 +0800 Processing by PostsController#index as HTML Rendered posts/index.html.erb within layouts/application (15.6ms) Completed 500 Internal Server Error (31ms)。

ActionView::Template::Error (nil:NilClass に対して未定義のメソッド `each'):

        <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'を使用します。