2016-03-14 1 views
0

J'essaie d'afficher une conversation simple entre les utilisateurs. Je voudrais le concevoir comme iMessages, pour différencier les expéditeurs, mais je n'arrive pas à comprendre comment le faire. Peu importe ce que j'essaie, il semble toujours comme message.sender == current_user, même pour le récepteurDifférencier les utilisateurs avec private_pub

Voici le js.erb pour pub privé:

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

Maintenant, la partie la plus délicate, dans mon _message .html.erb, comment.sender == current_user est toujours vrai. J'ai essayé de mettre en œuvre deux modèles, en fonction de l'utilisateur en cours, en utilisant un assistant:

HTML:

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

Aide:

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

malheureusement, mon div toujours obtenir le « -utilisateur actuel "message".

Ai-je raté quelque chose?

Répondre

0

Eh bien, je l'ai trouvé une solution propre à ce problème: Quelque part dans l'emballage, ajoutez une entrée incluant votre identifiant current_user

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

Ensuite, dans votre js Publish, récupérer, et le tour est joué :)

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