未定义的方法`每个'为nil:NilClass ...为什么?

 阳光明媚-在路上 发布于 2023-02-08 10:57

rails guide示例,单击按钮保存帖子,控制台显示此消息:

在2013-12-25 22:42:04开始发布"/ posts"for 127001在2013-12-25 22:42:04 +0800由PostsController处理#create as HTML参数:{"utf8"=>"✓","authenticity_token"=>"CLalUww3gqnSlED0AWdou6P/U2qya vPqDiBANQOuYgA =","post"=> {"title"=>"11","text"=>"22"},"commit"=>"保存帖子"}(0.0ms)开始事务(0.0ms)回滚事务重定向到http:// 127001:3000/posts已完成302在16ms内找到(ActiveRecord:0.0ms)

开始GET"/ posts"for 127001 at 2013-12-25 22:42:04 +0800 Processing by PostsController #index as HTML Rendered posts/index.html.erb layouts/application(15.6ms)已完成500内部服务器错误31毫秒

ActionView :: Template :: Error(未定义的方法`每个'为nil:NilClass):

        Text
        
        <% @posts.each do |post| %>

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

路线是正确的,为什么帖子是零?rails 4.0.2 ruby​​ 2.0

2 个回答
  • 要在遇到此问题时详细说明此错误

      undefined method `each' for nil:NilClass
    

    错误显然是抱怨你在这里调用每个方法(@posts),这是零.这意味着您没有在控制器中定义它.由于你没有定义它,这就是为什么它抱怨nil类的未定义方法.

    从视图中调用实例变量时,请确保检查?您必须在控制器中定义可在视图中访问的内容.

    如果您在控制器中调用私有方法,有时您也会收到此错误.

    2023-02-08 10:59 回答
  • 在您的帖子控制器中,您需要@posts根据您没有的错误进行定义.

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

    由于@posts未定义调用each它将生成undefined method每个'为nil:NilClass`.

    2023-02-08 10:59 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有