2016-08-08 20 views
0

@user.name funktioniert auf meine Beiträge, Benutzerprofil und überall sonst auf meiner Website. Aber wenn ich es zu Benutzerkommentaren hinzufüge, bekomme ich undefinierte Methode?undefined Methode, wenn ich den Benutzernamen zu den Kommentaren hinzufügen

<p class="comment_body"> 
    <h2><%= @user.name %></h2> 
    <%= comment.body %> 
</p> 

Ich versuchte <%= user.name %> und immer noch einen Fehler.

Ich versuchte <%= current_user.name %> und es funktionierte. Ich möchte jedoch nicht den Namen des aktuellen Benutzers anzeigen, sondern den Namen des Benutzers, der den Kommentar gepostet hat.

EDIT:

Ich habe vergessen, Benutzer zuordnen zu kommentieren, aber ich bin nicht wirklich sicher, wie.

Kommentare Controller

class CommentsController < ApplicationController 
    def create 
    @post = Post.find(params[:post_id]) 
    @comment = @post.comments.create(params[:comment].permit(:body)) 

    redirect_to post_path(@post) 
    end 
end 

ging ich in meine comments.rb und schrieb belongs_to :user und in meinem user.rb fügte ich has_many :comments.

+0

Bitte zeigen Sie uns die entsprechende Controller-Aktion. Vermutlich deklarieren Sie die '@ user'-Variable nicht im Controller (oder sie erhält einen' nil'-Wert). – koffeinfrei

+0

teilen Sie bitte auch die Ansicht Code mit diesen Zeilen –

+0

Könnten Sie bitte die vollständige Fehlerausgabe hinzufügen? – Tobias

Antwort

0

Also, sollten Sie den Benutzer einstellen und den Kommentar speichern, sollten Sie nicht? versuchen Sie etwas wie

def create 
    @post = Post.find(params[:post_id]) 
    @comment = @post.comments.create(params[:comment].permit(:body)) 
    @comment.user = current_user 
    if @comment.save 
     redirect_to post_path(@post) 
    else 
     # something else 
    end 
end 
+0

Meinst du, wie "Name" zu Kommentarmodell hinzufügen? – GVS

+0

Nein. Haben Sie keine Verbindung vom Kommentar zum Benutzer? – Ursus

+0

OHHHHH! Ich bin so dumm! Das habe ich total vergessen. Ich habe eine Verknüpfung von Kommentar zu Beitrag hinzugefügt und vergessen, den Benutzer zuzuordnen. lol ich kann das jetzt reparieren. Vielen Dank! Ich werde dich als Antwort machen – GVS