私は現在、RoRを教えてチュートリアルをやっていますが、ブートストラップを使ってレイアウトや素材を追加しています。見つけ出す。"未定義のメソッド` errors for 'nil:NilClass "エラー時に呼び出す方法
私は、検証部分(http://guides.rubyonrails.org/getting_started.html#adding-some-validation)をやろうとしていますが、私は使用している場合:
<% @post.errors.any? %>
私はこのメッセージが表示されます。
undefined method `errors' for nil:NilClass
Extracted source (around line #9):
<legend><h1>Add Post</h1></legend>
<%= form_for :post, url: posts_path, html: {class: 'form-horizontal'} do |f| %>
<% if @post.errors.any? %>
<div id="errorExplanation">
何も機能していないと私もコピーしてパーツを貼り付けチュートリアルから。ここで
は、ビューのコードです:
<p> </p>
<div class="span6"
<fieldset>
<legend><h1>Add Post</h1></legend>
<%= form_for :post, url: posts_path, html: {class: 'form-horizontal'} do |f| %>
<% if @post.errors.any? %>
<div id="errorExplanation">
<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 %>
<div class="control-group">
<%= f.label :title, :class => 'control-label' %>
<div class="controls">
<%= f.text_field :title, :class => 'span4' %>
</div>
</div>
<div class="control-group">
<%= f.label :content, :class => 'control-label' %>
<div class="controls">
<%= f.text_area :content, :rows => '7', :class => 'input-block-level' %>
</div>
</div>
<div class="form-actions">
<%= f.submit "Add Post", :class => 'btn btn-success' %>
<%= link_to "Cancel", posts_path, :class => 'btn', :style => 'float:right;' %>
</div>
<% end %>
</fieldset>
</div>
そして、私のposts_controller:
class PostsController < ApplicationController
def new
end
def create
@post = Post.new(params[:post].permit(:title, :content))
if @post.save
redirect_to @post
else
render 'new'
end
end
def show
@post = Post.find(params[:id])
end
def index
@posts = Post.order("created_at desc")
end
private
def post_params
params.require(:post).permit(:title, :content)
end
end
私は何をしないのですか?前もって感謝します!
@Deefourこんにちは。私は同じチュートリアルをしていて、 '5.12 Updating Posts'で同じエラーが発生します。 '@ post'変数は新しいメソッドで定義され、このエラーをスローし続けます。あなたは私を助けることができます? – Demnogonis
私は同じ問題を抱えていました。このチュートリアルの上部では、Newアクションに.Newと書かなければならないことは明白です。 – DennyHiu