###前提・実現したいこと
初心者ですが、動画講座を見ながら、railsでCtoCのサービスを作っています。
そこでユーザーが商品を予約した際に、商品を投稿したユーザーに本アプリ内にあるユーザー間メッセージ機能を使って、予約したユーザーが"あなたの商品を予約したいです!"という内容のメッセージを送信したいと考えています。
ユーザー間のメッセージ機能は実装済みですが、予約がcreateされたタイミングでどのようにmessage_controllerを動かせば良いのかが分かりません。現在send_first_chatというアクションで定義しています。
###該当のソースコード
ruby
1##reservation_controller 2class ReservationsController < ApplicationController 3 before_action :authenticate_user! 4 5 def create 6 @reservation = current_user.reservations.create(reservation_params) 7 Item.find(params[:item_id]).update(active:false) 8 @item = Item.find(params[:item_id]) 9 ReservationMailer.reservation_created(current_user, @item.user).deliver 10 #ここでmessage_controller内のsend_first_chatというアクションを動かしたい 11 redirect_to controller: :pages, action: :thanks 12 end 13end
ruby
1##message_controller 2class MessagesController < ApplicationController 3 before_action :authenticate_user! 4 before_action :set_conversation 5 6 def index 7 if current_user == @conversation.sender || current_user == @conversation.recipient 8 @other = current_user == @conversation.sender ? @conversation.recipient : @conversation.sender 9 @messages = @conversation.messages.order("created_at DESC") 10 else 11 redirect_to conversations_path, alert: "あなたをこれを見る権限がありません" 12 end 13 end 14 15 def create 16 @message = @conversation.messages.new(message_params) 17 @messages = @conversation.messages.order("created_at DESC") 18 if @message.save 19 respond_to do |format| 20 format.js 21 end 22 end 23 end 24 def send_first_message 25 @message = @conversation.messages.new("あなたの商品を予約したいです!") 26 @messages = @conversation.messages.order("created_at DESC") 27 if @message.save 28 respond_to do |format| 29 format.js 30 end 31 end 32 end 33 34 private 35 36 def set_conversation 37 @conversation = Conversation.find(params[:conversation_id]) 38 end 39 40 def message_params 41 params.require(:message).permit(:content, :user_id) 42 end 43end
##create.js.erb <% publish_to conversation_messages_path(@conversation) do %> $('#chat').prepend("<%= j render @message %>"); <% end %> $('#new_message')[0].reset();
###試したこと
ユーザーがreservationをcreateした際に,購入したユーザーから出品者に対して
"あなたの商品を予約したいです!" というmessageを送りたいです。
説明が分かりづらかったら申し訳ございません。
よろしくお願いします。。。
メッセージを送信の意味がわからないのですが、具体的にはどういう事でしょうか?そのあたりを明記してください。
そして送りたいのはわかるのですが、何が問題になっているのでしょう?例外が発生する?処理は完了しているのに実際はメッセージが送られていない? なども記述する必要があります。
あなたの回答
tips
プレビュー