Я делаю приложение чата в реальном времени в Rails, и у меня возникают проблемы с различиями между сообщениями, отправленными каждым пользователем. В частичном сообщении я использую сеанс current_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 все время. Таким образом, даже сообщения от другого пользователя обрабатываются классом текущего пользователя. Есть ли способ правильно отобразить эти сообщения?