【问题标题】:Differentiate users with private_pub使用 private_pub 区分用户
【发布时间】:2016-03-14 14:06:46
【问题描述】:

我正在尝试显示用户之间的简单聊天。我想像 iMessages 一样设计它,以区分发件人,但我就是不知道该怎么做。无论我尝试什么,它似乎总是 message.sender == current_user ,即使对于接收者也是如此

这是私人酒吧的 js.erb:

<% publish_to "/comments/create" do %>
 var new_comment = $("<%= escape_javascript(render 'projects/comment', comment: @comment) %>");
  var comment_box = $('.feedback-index');
  new_comment.appendTo(comment_box);

  $('#comment_content').val('');
  $(' .fa-comment').text(" <%= @comment.project.comments.size %>");
 $('#messagesbox').scrollTop($('#messagesbox').prop("scrollHeight"));

<% end %>

现在,棘手的部分在我的 _message.html.erb 中,comment.sender == current_user 始终为真。我尝试根据当前用户使用帮助器实现两种设计:

HTML:

<div class="col-xs-8 col-sm-9 the-comment <%= self_or_other(comment) %>">

助手:

module MessagesHelper
  def self_or_other(message)
    message.user == current_user ? "current-user-message" : ""
  end
end

不幸的是,我的 div 总是得到“当前用户消息”类。

我错过了什么吗?

【问题讨论】:

    标签: ruby-on-rails websocket private-pub


    【解决方案1】:

    好吧,我找到了一个干净的解决方案来解决这个问题: 在包装器的某处,添加一个包含您的 current_user id 的输入

    <input type="hidden" value="<%= current_user.id %>" name="sender-id" id="senderid">
    

    然后,在您的 js 中发布、检索它,然后瞧 :)

    <% publish_to whatever_you_want  do %>
        sender = $('#senderid').val();
        if (sender == "<%= current_user.id %>") {
           // do your stuff
        }
    <% end %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多