私はRailsでリアルタイムのチャットアプリケーションを作成していますが、各ユーザーから送信されたメッセージを区別するのに問題があります。私のメッセージの部分では、current_userセッションを使用して.current-userまたは.other-userを各メッセージに適用します。ActionCableでリアルタイムでレンダリングされた部分でセッション変数を使用
_message.html.erb
<% if msg.text.present? %>
<% if msg.user_id == current_user.id %>
<p class="current-user msg"><%= msg.text %></p>
<% else %>
<p class="other-user msg"><%= msg.text %></p>
<% end %>
<% end %>
新しいメッセージがメッセージコントローラ
class MessagesController < ApplicationController
...
def create
@chat = Chat.find(params[:chat_id])
@message = @chat.messages.build(message_params)
if @message.save
ActionCable.server.broadcast "chat_channel",
message: render_message(@message)
end
end
...
private
def render_message(msg)
render(partial: 'message', locals: { msg: msg })
end
とJavaScript
chats.coffee
received: (data) ->
$('#messages').append data.message
$('#message_text').val('')
messages_to_bottom()
とメッセージリストに追加さから放送されている私はほとんどそれが働い持っているが、それは= CURRENT_USERのように見えます常にmsg.user_id。したがって、他のユーザーからのメッセージでさえも、現在のユーザークラスでレンダリングされています。これらのメッセージを正しく表示する方法はありますか?