前提・実現したいこと
こんにちは。プログラミング初心者で、現在、Rubyを使用し、チャット機能を作成しています。
メッセージと共に、ActiveHashを利用した項目を選択し、送信する機能を実装しようとしていますが、送信した内容がデータベースに保存できません。データベースは、MySqlを使用しています。
エラーメッセージが出ていないので、どこが間違っているのかわからず、質問させていただきました。
該当のソースコード
controller
1class MessagesController < ApplicationController 2 def index 3 @message = Message.new 4 @room = Room.find(params[:room_id]) 5 @messages = @room.messages.includes(:user) 6 end 7 8 def create 9 @room = Room.find(params[:room_id]) 10 @message = @room.messages.new(message_params) 11 @message.save 12 end 13 14 private 15 16 def message_params 17 params.require(:message).permit(:image, :content, :heat_id, :condition_id).merge(user_id: current_user.id) 18 end 19end
model
1class Condition < ActiveHash::Base 2 self.data = [ 3 { id: 1, name: '体調' }, 4 { id: 2, name: '良い' }, 5 { id: 3, name: '普通' }, 6 { id: 4, name: '悪い' } 7 ] 8 9 include ActiveHash::Associations 10 has_many :messages 11end 12
model
1class Heat < ActiveHash::Base 2 self.data = [ 3 { id: 1, name: '体温' }, 4 { id: 2, name: '35.5度' }, 5 { id: 3, name: '35.6度' }, 6 { id: 4, name: '35.7度' }, 7 { id: 5, name: '35.8度' }, 8 { id: 6, name: '35.9度' }, 9 { id: 7, name: '36.0度' }, 10 { id: 8, name: '36.1度' }, 11 { id: 9, name: '36.2度' }, 12 { id: 10, name: '36.3度' }, 13 { id: 11, name: '36.4度' }, 14 { id: 12, name: '36.5度' }, 15 { id: 13, name: '36.6度' }, 16 { id: 14, name: '36.7度' }, 17 { id: 15, name: '36.8度' }, 18 { id: 16, name: '36.9度' }, 19 { id: 17, name: '37.0度' }, 20 { id: 18, name: '37.1度' }, 21 { id: 19, name: '37.2度' }, 22 { id: 20, name: '37.3度' }, 23 { id: 21, name: '37.4度' }, 24 { id: 22, name: '37.5度以上' } 25 ] 26 27 include ActiveHash::Associations 28 has_many :messages 29end
model
1 belongs_to :room 2 belongs_to :user 3 extend ActiveHash::Associations::ActiveRecordExtensions 4 belongs_to :heat 5 belongs_to :condition 6 7 with_options presence: true do 8 validates :heat_id 9 validates :condition_id 10 validates :content 11 end 12 13 with_options numericality: { other_than: 1, message: '選択してください' } do 14 validates :heat 15 validates :condition 16 end 17 18end 19
html
1<div class="chat-header"> 2 <div class="left-header"> 3 <div class="header-title"> 4 *<%= @room.room_name %>さんの連絡ルーム* 5 </div> 6 </div> 7 <div class="right-header"> 8 <div class="header-button"> 9 <a class="btn btn-danger" href="#">ルームを終了する</a> 10 </div> 11 </div> 12</div> 13 14<div class="messages"> 15 <%= render partial: 'message', collection: @messages %> 16</div> 17 18<%= form_with model: [@room, @message], class: 'form', local: true do |f| %> 19 <div class="form-input"> 20 <%= f.collection_select(:heat_id, Heat.all, :id, :name, {}, {class:"form-control", id:"select-box"}) %> 21 <%= f.collection_select(:condition_id, Condition.all, :id, :name, {}, {class:"form-control", id:"select-box"}) %> 22 <%= f.text_area :content, class: "form-control", placeholder:"メッセージを入力", id:"content", rows:"3" %> 23 <label class="form-image"> 24 <span class="btn btn-outline-dark">画像</span> 25 <%= f.file_field :image, class: "hidden" %> 26 </label> 27 </div> 28 <%= f.submit '送信', class:"btn btn-info"%> 29<% end %>
html
1<div class="wrapper"> 2 <div class="side-bar"> 3 <%= render "side_bar" %> 4 </div> 5 <div class="chat"> 6 <%= render "main_chat" %> 7 </div> 8</div>
html
1<div class="message"> 2 <div class="upper-message"> 3 <div class="message-user"> 4 <%= message.user.name %> 5 </div> 6 <div class="message-date"> 7 <%= message.created_at %> 8 </div> 9 <div class="message-heat"> 10 <%= message.heat_id %> 11 </div> 12 <div class="message-condition"> 13 <%= message.condition_id %> 14 </div> 15 </div> 16 <div class="lower-message"> 17 <div class="message-content"> 18 <%= message.content %> 19 </div> 20 </div> 21</div>
試したこと
messages.controller.rbのcreateアクションで、@message = @room.messages.new(message_params)の直前にbinding.pryを記述し、paramsを確認しました。
8: def create 9: @room = Room.find(params[:room_id]) => 10: binding.pry 11: @message = @room.messages.new(message_params) 12: @message.save 13: end [1] pry(#<MessagesController>)> params => <ActionController::Parameters {"authenticity_token"=>"JFb43g/X7GC/a9hJFElMb99vkZgNrtsB6u/FnsuoC6Qii347rpkuda5+8GO6HE+K3YonsnNmZhbr9+4Ir6cx2w==", "message"=>{"heat_id"=>"13", "condition_id"=>"2", "content"=>"test"}, "commit"=>"送信", "controller"=>"messages", "action"=>"create", "room_id"=>"1"} permitted: false> [2] pry(#<MessagesController>)>
パラメーターは問題なく送られていると思いました。
また、サーバーの再起動も行ってみましたが、変化はありませんでした。
他に考えられる問題や修正点を教えていただきたいです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/02 02:37
2021/06/02 07:31