2016-03-20 7 views
1

Modell Dies ist mein Artikel zu Beziehung gehört:Schienen nicht definierte Methode `id‘ für nil: NilClass mit

class Item < ActiveRecord::Base 
    has_many :props 
end 

Das ist mein prop-Modell (porp ist kurz von Immobilien)

class Prop < ActiveRecord::Base 
    belongs_to :item 
end 

I habe dieses Problem. Wenn ich Prop erstellen, benötige ich item_id. Aber wenn es kein Element mit dieser ID ist, werde ich hier einen Fehler:

<%= @prop.item.id %> 

    <%= @prop.item.name %> 

Was kann ich tun?

UPD: Ich seine Existenz wie <%= @prop.item.try(:name) %> überprüfen Was meine anderen Optionen?

+0

Artikel einstellen Modell has' has_many: Elemente 'Ist es ein Tippfehler? – Pavan

+0

Oh, es scheint Noot ein Tippfehler Ich habe es manuell eingegeben, damit es ein Fehler ist! – user2950593

+0

habe ich es has_many: Requisiten das Problem noch – user2950593

Antwort

-1

Einrichten Ihre Modelle wie so:

class Item < ActiveRecord::Base belongs_to :prop end

class Prop < ActiveRecord::Base has_one :item end

Sie erlauben würde, @prop.item.id

Hinweis der singulären has_one in der Modelldefinition zu nennen. Sie sollten @prop.items.id anrufen, wenn Sie eine has_many Beziehung verwenden möchten.

+0

Ich verstehe nicht. Artikel gehört nicht zur Requisite. Eigentum gehört zum Gegenstand. – user2950593

+0

Sie haben die Frage völlig falsch verstanden. – Pavan

+0

Aber Sie rufen '@ prop.item' nicht' @ item.prop'? – meshpi

0

schlage ich vor Gebrauch NullObject.

class Item 
    def self.null 
    Item.new(name: 'null') 
    end 
end 

@item = @prop.item || Item.null 

Dann wird dieser Code nicht Fehler aus:

<%= @item.id %> 

<%= @item.name %> 
Verwandte Themen