【发布时间】:2016-10-13 19:02:27
【问题描述】:
我正在 Rails 中制作一个实时聊天应用程序,但我无法区分每个用户发送的消息。在我的部分消息中,我使用 current_user 会话将 .current-user 或 .other-user 应用于每条消息。
_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 一直。因此,即使来自其他用户的消息也正在使用当前用户类呈现。有什么方法可以正确呈现这些消息?
【问题讨论】:
标签: javascript ruby-on-rails actioncable