2012-04-17 21 views
1

型號:不能得到對象屬性

class Car < ActiveRecord::Base 
    ... 
    belongs_to :manufacturer 
    ... 
end 


class Manufacturer < ActiveRecord::Base 
    ... 
    has_many :cars 
    ... 
end 

車控制器:

def index 
    @title = "All cars" 
    @cars = Car.paginate(:page => params[:page], :per_page => 20) 
    end 

查看:

<%= car.manufacturer.name %> 

表演:未定義的方法'名」的零:NilClass

好。查看:

<%= car.manufacturer[name] %> 

表演:0x460c488>

但是:對#<#未定義的局部變量或方法'名」!查看:

<%= car.manufacturer.to_yaml %> 

表演:

--- !ruby/object:Manufacturer 
attributes: 
    id: 1 
    name: Acura 
    created_at: 2011-11-30 09:59:19.750976000 Z 
    updated_at: 2011-12-06 10:38:46.569531000 Z 

因此,如何能我讀Car.manufacturer的名字嗎?

+1

你'belongs_to的:model',不'belongs_to的:manufacturer'。這是一個抄寫錯誤嗎? – Chowlett 2012-04-17 13:25:03

+0

固定,thx。汽車同時擁有:型號和製造商 – bravedick 2012-04-17 13:26:16

+0

'car.manufacturer [name]'無論如何都是錯誤的,您可能想要'car.manufacturer [:name]' – Achilles 2012-04-17 14:56:06

回答

2

<%= car.manufacturer.name if car.manufacturer %>由於某些結果將不具有該屬性集,因此可確保只有在設置屬性getter方法後才調用該屬性。

+0

nope:未定義的方法'first'for#<製造商:0x551caa8> – bravedick 2012-04-17 13:30:24

+0

至少它現在說製造商。這可能是因爲分頁。擺脫分頁,看看當你嘗試不同的方式引用它時會發生什麼。找到 – Jonathan 2012-04-17 13:43:19

+1

!它適用於:<%= car.manufacturer.name除非car.manufacturer.nil? %>因此,一些Cars in Database中沒有manufacturer_id。解決方案太簡單了:) – bravedick 2012-04-17 14:23:45