質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

1431閲覧

railsで予約がcreateされたタイミングでリアルタイムメッセージを送信したい

kohekohe

総合スコア14

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

2クリップ

投稿2016/10/21 09:23

編集2022/01/12 10:55

###前提・実現したいこと
初心者ですが、動画講座を見ながら、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を送りたいです。

説明が分かりづらかったら申し訳ございません。
よろしくお願いします。。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hana-da

2016/10/21 22:39 編集

メッセージを送信の意味がわからないのですが、具体的にはどういう事でしょうか?そのあたりを明記してください。 そして送りたいのはわかるのですが、何が問題になっているのでしょう?例外が発生する?処理は完了しているのに実際はメッセージが送られていない? なども記述する必要があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問