Rails actioncable传输错误的样式

时间:2017-06-25 20:50:51

标签: ruby-on-rails ruby-on-rails-5 actioncable

我使用ActionCable建立聊天。我希望这些消息具有不同的样式,我或任何其他用户都写过它们 主要是我自己的消息应显示在右侧,其他用户的消息应显示在左侧。

这是问题所在。当我提交消息时,其他用户显示错误的样式(错误的站点)。页面刷新修复此问题,直到广播新消息。

有没有办法解决这个问题?

message_partial

- 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)

chatroom_partial

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

1 个答案:

答案 0 :(得分:1)

可能最好的方法是在邮件中添加另一个属性,例如"谁",在广播之前填写它(current_user == msg.user?' me':&#39 ;其他')然后用它来决定在哪里附加消息。

类似的东西:

if (data.who == 'me') {
  $('.message.me').append data.msg
}