[解決済み] エラーメソッドで呼び出すと、「nil:NilClass の未定義メソッド `errors'」が発生する。
2022-02-19 04:29:52
質問
私は現在、独学でRoRを学び、チュートリアルを行っていますが、bootstrapを使ってより良いレイアウトやものを追加しているところですが、解決できない問題に遭遇しています。
バリデーション部分( 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
何が足りないのでしょうか?ありがとうございました。
解決方法は?
を定義する必要があります。
@post
の中で
new
のアクションもあります。
def new
@post = Post.new
end
を取得していますね。
NilClass
エラーは
@post
には値がありません。
(それは
nil
)
で最初にフォームを読み込んだとき
new
アクションを実行します。
を実行すると
render :new
の中で
create
アクションを使用しているので、問題はありません。
@post
の先頭で定義した
create
.
関連
-
[解決済み】なぜRuby on Railsは、http://localhost:3000 の代わりに http://0.0.0.0:3000 を使用するのですか?
-
[解決済み] Ruby/Rails の「フック」とは何ですか?
-
[解決済み] 検索 vs 発見する by vs どこに
-
[解決済み] railsでhidden fieldタグを使用する方法
-
[解決済み] Ruby: public static メソッドを作るには?
-
[解決済み] "render :nothing => true" は空のプレーンテキストファイルを返すのですか?
-
[解決済み] Rspec が私のモデルクラスを認識しない。初期化されていない定数エラー
-
[解決済み] ルビーオンレール モデルから明確な値を選択する
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] すべての Ruby テストで発生: nil:NilClass の未定義メソッド `authenticate' が発生
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Rails 4 RoutingError: ルートが一致しない[POST]。
-
[解決済み] Rubyの文字列から日付への変換
-
[解決済み] Ruby on Railsのランナー
-
[解決済み] Rails ExecJS::ProgramError in Pages#home?
-
[解決済み] Herokuの問題 : あなたが探しているページは存在しません。
-
[解決済み] Railsです。gemを使った特定バージョンのライブラリのアンインストール
-
[解決済み] サーバーはRailsで既に稼働している
-
[解決済み] rails consoleを起動するとRailsのイニシャライザーが呼ばれる?
-
[解決済み] Heroku: 既存のrailsアプリにseeds.rbをプッシュする方法?
-
[解決済み] Heroku Error R14 (Memory quota exceeded): How do I solve this?