Разграничить пользователей с помощью private_pub

Я пытаюсь отобразить простой чат между пользователями. Я хотел бы разработать его как 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) %>">

Helper:

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

к сожалению, мой div всегда получает класс "current-user-message".

Я что-то пропустил?

1 ответ

Ну, я нашел чистое решение этой проблемы: где-то в обертке, добавьте вход, включая ваш идентификатор current_user

<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 %>
Другие вопросы по тегам