2017-09-13 5 views
0

Ich bekomme diesen Fehler mit Ruby auf Schienen. Ich habe ein Scaffold namens Style erstellt, das einen Titel und eine Beschreibung (String und Text), eine User-Session mit dem Ruby Gem Devise und ein Modell namens category hat, das ich mit add_category_id_to_styles zum Style hinzugefügt habe. Ich habe dieNoMethodError in StylesController # neue undefinierte Methode `Stile 'für Nil: NilClass

def new 
@style = Style.new 
end 

zu

def new 
@style = current_user.styles.build 
end 

im Stil Controller und nun seine mir die nicht definierte Methode 'Stile' für null geben: NillClass. Weiß jemand von euch, warum er mir diesen Fehler gibt?

+0

current_user wird null sein, bis Sie sich einloggen. –

+0

Soll ich dann eine Bedingung machen? Danke – marcos

+0

In diesem Fall ist current_user null. was bedeutet, dass du dich nicht eingeloggt hast. Ja, Sie können 'if current_user.present?' überprüfen –

Antwort

0

Devise stellt Ihnen die Methode #user_signed_in? zur Verfügung, um zu überprüfen, ob der aktuelle Benutzer angemeldet ist. Wenn ja, haben Sie Zugriff auf #current_user. So können Sie haben:

def new 
    @style = user_signed_in? ? current_user.styles.build : Style.new 
end 

Natürlich können Sie current_user.present? direkt überprüfen, aber ich denke #user_signed_in? die Absicht besser vermittelt.

Verwandte Themen