2012-04-17 4 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

에 관심이있을 수 : model'을하지'belongs_to : manufacturer'. 그게 전사 오류인가요? – Chowlett

+0

고정, thx. 자동차는 모델과 제조업체가 둘 다 있습니다 : – bravedick

+0

'car.manufacturer [name]'이 잘못되었습니다. 아마도 car.manufacturer [: name]' – Achilles

답변

2

<%= car.manufacturer.name if car.manufacturer %> 일부 결과에는 속성이 설정되지 않으므로 속성 getter 메소드가 설정된 경우에만이 속성을 호출 할 수 있습니다.

+0

을 원할 수 없습니다. nope : # 에 대한 첫 번째 정의되지 않은 메소드 – bravedick

+0

그것은 지금 Manufacturer를 말한다. 그것은 아마도 페이지 매김 (paginate) 때문일 것입니다. 페이지 매기기를 없애고 다른 방법으로 참조 할 때 어떤 일이 발생하는지 확인하십시오. – Jonathan

+1

발견! 그것은 다음과 같이 작동합니다 : <% = car.manufacturer.name car.manufacturer.nil? %> 데이터베이스의 일부 자동차에는 manufacturer_id가 없습니다. 해결책은 soooo 간단했습니다 :) – bravedick