Разграничить пользователей с помощью 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 %>