ino-akiのブログ

ITエンジニアを目指して学習したことをアウトプットするブログ

createアクションを動かそうとしたときのエラー

 def create
   @room = Room.find(params[:room_id])
   message = @room.messages.new(message_params)
   if @message.save
     redirect_to room_messages_path(@room)
   else
     render :index
   end
 end

上記ではif @message.saveの@messageが定義されずエラーになっている

 

下記のようにすることで@messageを定義する

@message = @room.messages.new(message_params)

 

であれば、逆にif @message.saveをif message.saveにするのはどうかと疑問になるところ

この記述でもメッセージの送信は可能だが、メッセージの保存に失敗した時にrender :indexで呼ばれた先のビューファイルで@messageがないことによるエラーが発生するので、@messageと修正するのが良い