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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

917閲覧

ActionCableでcurrent_userIDを取得する方法をご教授いただきたいです

Aki-F

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/01/31 15:15

編集2021/02/23 15:28

解決したいこと

Ruby on Railsで対話型のラインのようなチャット機能をActionCableを使用して作成しています。
リアルタイムチャット自体は実装できたのですが、別ブラウザで機能確認を行ったところ、ログイン中のユーザーidがうまく取得できず、送信側の表示になってしまいます。リロードを行うと送信(右側)受信(左側)それぞれ正常な位置に戻ります。
送信者・受信者は、message_channel.jsファイルのreceived(date)で条件分岐を行っています。

どなたか解決方法をご教授いただきたいです。

発生している問題・エラー

下記Gifのような現象が発生しています。
リアルタイムチャット

該当するソースコード

javascript

1-- message_channel.js -- 2import consumer from "./consumer" 3 4consumer.subscriptions.create("MessageChannel", { 5 connected() { 6 // Called when the subscription is ready for use on the server 7 }, 8 9 disconnected() { 10 // Called when the subscription has been terminated by the server 11 }, 12 13 received(data) { 14 const nickName = `${data.user.nickname}` 15 const content = `${data.content.content}` 16 const messageData = `${data.time}` 17 const currentUser = `${data.user.id}` 18 const sendUser = `${data.content.user_id}` 19 if (currentUser == sendUser) { 20 const HTML = ` 21 <div class="my-content"> 22 <div class="my-message"> 23 <div class="my-message-date"> 24 ${messageData} 25 </div> 26 <div class="my-message-content"> 27 ${content} 28 </div> 29 </div> 30 </div> 31 ` 32 const messages = document.getElementById('message') 33 const newMessage = document.getElementById('content') 34 messages.insertAdjacentHTML('beforeend', HTML) 35 newMessage.value='' 36 } else { 37 const HTML = ` 38 <div class="content"> 39 <div class="upper-message"> 40 <div class="message-user"> 41 ${nickName} 42 </div> 43 </div> 44 <div class="lower-message"> 45 <div class="message-content" > 46 ${content} 47 </div> 48 <div class="message-date"> 49 ${messageData} 50 </div> 51 </div> 52 </div> 53 ` 54 const messages = document.getElementById('message') 55 const newMessage = document.getElementById('content') 56 messages.insertAdjacentHTML('beforeend', HTML) 57 newMessage.value='' 58 } 59 } 60});

ruby

1-- message_channel.rb -- 2class MessageChannel < ApplicationCable::Channel 3 def subscribed 4 stream_from 'message_channel' 5 end 6 7 def unsubscribed 8 # Any cleanup needed when channel is unsubscribed 9 end 10end

ruby

1-- application_cable/connection.rb -- 2module ApplicationCable 3 class Connection < ActionCable::Connection::Base 4 identified_by :current_user 5 6 def connect 7 self.current_user = find_verified_user 8 end 9 10 private 11 12 def find_verified_user 13 if verified_user = User.find_by(id: cookies.signed[:user_id]) 14 verified_user 15 else 16 reject_unauthorized_connection 17 end 18 end 19 end 20end

行ったこと

connection.rbでcurrent_userを定義しました。

解決したいこと

受信者と送信者のチャット画面でメッセージの表示位置を変えることができませんでした。
初学者のため拙いコードで申し訳ございませんが、どなたかご教授いただきたいです。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問