2016-02-07 1 views
0

J'ai une application rails où les utilisateurs peuvent ajouter un poste et d'autres utilisateurs peuvent les commenter j'essayais d'ajouter un lien de message direct avec les utilisateurs qui commenter, j'ai essayé quelque chose comme ce qui suit une suggestion sur stackoverflowrails montrant l'erreur ActiveRecord_Associations tout en ajoutant un lien de message d'envoi

_form.html.erb

<%= form_for :conversation, url: :conversations, html: { class: "" } do |f| %> 
<div class="form-group"> 
    <%= f.label :recipients %> 
    <%= hidden_field_tag(:recipient_id, "#{@user.id}") %></div> 
<div class="form-group"> 
    <%= f.label :subject %> 
    <%= f.text_field :subject, placeholder: "Subject", class: "form-control" %> 
</div> 
<div class="form-group"> 
    <%= f.label :message %> 
    <%= f.text_area :body, class: 'form-control',placeholder: "Type your message here", rows: 4 %> 
</div> 

<%= f.submit "Send Message", class: "btn btn-success" %> 

<% end %> 

show.html.erb

<%= link_to 'Send Message', new_conversation_path(:recipient_id => @post.comments.user.id), class: 'send-message-icon' %> 

**conversation_controller.rb** 
def new 
    @user = User.find_by(id: params[:recipient_id]) 
    end 

    def create 
    recipients = User.find_by(id: params[:recipient_id]) 
    conversation = current_user.send_message(recipients, conversation_params[:body], conversation_params[:subject]).conversation 
    flash[:success] = "Your message was successfully sent!" 
    respond_to do |format| 
     format.html {redirect_to conversation_path(conversation)} 
     format.js 
    end 
    end 

Mais je reçois l'erreur suivante

undefined method `user' for #<Comment::ActiveRecord_Associations_CollectionProxy:0x93b1018> 

J'utilise gem mailboxer pour la fonctionnalité de messagerie.

Répondre

0

En supposant que vous avez une table comments qui a une colonne user_id

<% @post.comments.each do |comment| %> 
    <%= link_to 'Send Message', new_conversation_path(recipient_id: comment.user_id) %> 
+0

merci bro ..... merci beaucoup –