2016-03-20 21 views
1

這是我的產品型號:軌未定義的方法'身份證」的零:NilClass與所屬關係

class Item < ActiveRecord::Base 
    has_many :props 
end 

這是我的道具模型(PORP是從屬性的短)

class Prop < ActiveRecord::Base 
    belongs_to :item 
end 

我有這個問題。 當我創建道具時,我需要item_id。 但是,如果沒有項目與此ID 我會來到這裏的錯誤:

<%= @prop.item.id %> 

    <%= @prop.item.name %> 

我該怎麼辦?

UPD:我可以檢查它的存在,如<%= @prop.item.try(:name) %>我的其他選項是什麼?

+0

你的項目模型has'的has_many:items'它是一個錯字? – Pavan

+0

哦,它似乎是noot我手動輸入它的錯字,所以這是一個錯誤! – user2950593

+0

我將其更改爲has_many:道具問題仍然存在 – user2950593

回答

-1

設置你的模型像這樣:

class Item < ActiveRecord::Base belongs_to :prop end

class Prop < ActiveRecord::Base has_one :item end

將允許你打電話 @prop.item.id

請注意,在模型定義的單數has_one。 如果您想使用has_many關係,您應該致電@prop.items.id

+0

我不明白。物品不屬於道具。屬性屬於項目。 – user2950593

+0

你完全誤解了這個問題。 – Pavan

+0

但是你打電話給'@ prop.item'而不是'@ item.prop'? – meshpi

0

我建議使用NullObject。

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

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

那麼這個代碼不會引發錯誤:

<%= @item.id %> 

<%= @item.name %> 
相關問題