現在、Ruby on railsにて開発作業中ですが、
タイトルのようなエラー(undefined method `each' for nil:NilClass)が出て
困っています。
やりたいこととしては名前フォームや入力フォームをindex.html.erbに表示
させるという単純な作業です。
Teratail内で似た事象を調べたところ、インスタンスの生成をコントローラで行っていないため、このようなエラーが出るとありました。
しかし、該当のコントローラにてインスタンスの生成コードを記述しましたが、
エラーが表示されたままです。
ソースコードを添付させて頂きます。
Messages.controller.rb(該当のコントローラ)
↓↓↓↓↓
Ruby
1class MessagesController < ApplicationController 2 def index 3 @message = Message.new →ここでインスタンスを生成しています。 4 @messages = Message.all 5 end 6 7 def create 8 @message = Message.new(message_params) 9 @message.save 10 redirect_to root_path , notice: 'メッセージを保存しました' 11 end 12 13 private 14 def message_params 15 params.require(:message).permit(:name, :body) 16 end 17 18end
index.html.erb
↓↓↓↓↓
Ruby
1 2<h1>メッセージ一覧</h1> 3 4<% @messages.each do |message| %> 5 名前:<%= message.name %> 6 内容:<%= message.body %> 7 <br> 8<% end %> 9 10 11 12<%= form_for(@message) do |f| %> 13 名前: 14 <%= f.text_field :name %> 15 内容: 16 <%= f.text_field :body %> 17 <%= f.submit %> 18<% end %> 19 20<%= form_for(@message) do |f| %> 21 名前: 22 <%= f.text_field :name %> 23 24 内容: 25 <%= f.text_field :body %> 26 <%= f.submit %> 27<% end %>
routes.rb
↓↓↓↓↓
Ruby
1Rails.application.routes.draw do 2 root 'messages#index' 3 resources :messages , only: [:create] 4end
お手数ですが、ご教示頂けましたら幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。