2
我在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始終。所以即使來自其他用戶的消息也正在使用當前用戶類呈現。有什麼方法可以正確呈現這些消息嗎?