我使用ActionCable建立聊天。我希望这些消息具有不同的样式,我或任何其他用户都写过它们 主要是我自己的消息应显示在右侧,其他用户的消息应显示在左侧。
这是问题所在。当我提交消息时,其他用户显示错误的样式(错误的站点)。页面刷新修复此问题,直到广播新消息。
有没有办法解决这个问题?
- if current_user == msg.user
.message.me
.message-body
%span.message-username= link_to msg.user.name, msg.user, target: '_blank'
%time
%i.icon-clock
= msg.created_at.strftime('%H:%M:%S')
= raw(msg.content_html)
= link_to image_tag(msg.user.avatar.url(:extrasmall), alt: msg.user.name, class: "user-img"), msg.user, target: '_blank'
- else
.message.other
= link_to image_tag(msg.user.avatar.url(:extrasmall), alt: msg.user.name, class: "user-img"), msg.user, target: '_blank'
.message-body
%span.message-username= link_to msg.user.name, msg.user, target: '_blank'
%time
%i.icon-clock
= msg.created_at.strftime('%H:%M:%S')
= raw(msg.content_html)
App.proom = App.cable.subscriptions.create "ProomChannel",
connected: ->
disconnected: ->
received: (data) ->
unless data.msg.blank?
$('#messages-table').append data.msg
scroll_bottom()
play_sound()
$(document).on 'turbolinks:load', ->
submit_msg()
scroll_bottom()
submit_msg = () ->
$('#msg_content').on 'keydown', (event) ->
if event.keyCode is 13
$('#msg_button').click()
event.target.value = ""
event.preventDefault()
scroll_bottom = () ->
try
$('.chat').scrollTop($('.chat')[0].scrollHeight)
catch
答案 0 :(得分:1)
可能最好的方法是在邮件中添加另一个属性,例如"谁",在广播之前填写它(current_user == msg.user?' me':&#39 ;其他')然后用它来决定在哪里附加消息。
类似的东西:
if (data.who == 'me') {
$('.message.me').append data.msg
}