Getting undefined method `errors' for nil:NilClass

ruby, ruby-on-rails, ruby-on-rails-4

Solution

Change

@Post = Post.new

To

@post = Post.new

Subtle but deadly

Problem

I'm doing the Ruby on Rails tutorial at http://guides.rubyonrails.org/getting_started.html However when I get to "5.11 Adding Some Validation", after adding the error message to display when I try to create a new post from the index view I get "undefined method `errors' for nil:NilClass" This is the error line highlighted. I have already created a new Post in my new action in the controller. Here is the source new.html.erb ``` <h1>New Post</h1> <%= form_for :post, url: posts_path do |f| %> <% if @post.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2> <ul> <% @post.errors.full_messages.each do |msg| %> <li><%= msg %></li> <% end %> </ul> </div> <% end %> <p> <%= f.label :title %><br> <%= f.text_field :title %> </p> <p> <%= f.label :text %><br> <%= f.text_area :text %> </p> <p> <%= f.submit %> </p> <% end %> ``` posts_controller.rb ``` class PostsController < ApplicationController def new @Post = Post.new end def create @post = Post.new(post_params) if @post.save redirect_to @post else render 'new' end end def show @post= Post.find(params[:id]) end def index @posts = Post.all end def edit @post = Post.find(params[:id]) end def update @post = Post.find(params[:id]) if @post.update(post_params) redirect_to @post else render 'edit' end end private def post_params params.require(:post).permit(:title, :text) end end ``` Thanks.

Original source