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
要在遇到此问题时详细说明此错误
undefined method `each' for nil:NilClass
错误显然是抱怨你在这里调用每个方法(@posts),这是零.这意味着您没有在控制器中定义它.由于你没有定义它,这就是为什么它抱怨nil类的未定义方法.
从视图中调用实例变量时,请确保检查?您必须在控制器中定义可在视图中访问的内容.
如果您在控制器中调用私有方法,有时您也会收到此错误.
在您的帖子控制器中,您需要@posts
根据您没有的错误进行定义.
# app/controllers/posts_controller.rb class PostsController < ApplicationController def index @posts = Post.all end end
由于@posts
未定义调用each
它将生成undefined method
每个'为nil:NilClass`.