メッセージ機能の実装の中で、メッセージを送信すると自動で名前や時刻を表示できるようにしたいのですが、エラーになってしまいます。
messagesのindexでメッセージのやりとりの画面を表示したいです。
:出ているエラー
NameError in Messages#index Showing /Users/kaeo/projects/gol-po/app/views/messages/index.html.erb where line #22 raised: undefined local variable or method `message' for #<#<Class:0x00007fb582acef38>:0x00007fb582acd5e8> Did you mean? @message @messages
:messages_controller
class MessagesController < ApplicationController before_action :authenticate_user! def index @message = Message.new @golf = Golf.find(params[:golf_id]) @messages = @golf.messages.includes(:user) end def create @golf = Golf.find(params[:golf_id]) @message = @golf.messages.new(message_params) if @message.save redirect_to golf_messages_path(@golf) else @messages = @golf.messages.includes(:user) render :index end end private def message_params params.require(:message).permit(:content).merge(user_id: current_user.id, golf_id: params[:golf_id]) end end
:golves_controller
def new @golf = Golf.new end def create @golf = Golf.new(golf_params) if @golf.save redirect_to root_path else render :new end @comment = Comment.new @commentALL = @golf.comments @message = Message.new @messageALL = @golf.messages end def show @comment = Comment.new @comments = @golf.comments.includes(:user) @message = Message.new @messages = @golf.messages.includes(:user) end
:messages
index.html.erb
<div class="messages"> <div class="message"> <div class="upper-message"> <div class="message-user"> <!-- 投稿したユーザー名情報を出力する --> <%= message.user.nickname %> </div> <div class="message-date"> <!-- 投稿した時刻を出力する --> <%= message.created_at %> </div> </div> <div class="lower-message"> <div class="message-content"> <!-- 投稿したメッセージ内容を記述する --> <%= message.content %> </div> </div> </div> </div>
<%= message.user.nickname %>
のところにエラーが出ています。
createの下にbinding.pryをかけて@messageの中身を見るとnil
になっていました。
controllerがよくないかとは思うのですが、どう記述したら良いのか分からなくなってしまいました。
どなたかお力貸していただけないでしょうか。よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー