2011-01-24 3 views
1

나는 비교적 쉽게 생각할 수있는 문제에 정말로 문제가 있으며 아마도 내가 잘못 생각한 것으로 쉽게 수정할 수 있습니다.부모보기에서 자식 값 표시

저는 Person 모델과 Department 모델을 가지고 있습니다. 부서 및학과 belongs_to :

관계는 사람의 has_one있는 내가 그 사람의 특성을 수집하기 위해 반복하고있을 때 내보기에서

사람

, 나는 부서 이름에 액세스 할 수 있어야합니다. Person 테이블에 department_id를 외래 키로 가지고 있으므로 각 인원 부서의 유효한 ID를 볼 수 있지만이 ID를 사용하여 부서 이름을 검색 할 수있는 방법은 무엇입니까?

<% @people.each do |p| %> 
    <%= p.name %> 
    <%= p.tel_num %> 
    <%= p.department_id %> <- i want this to somehow display the name of department 
<% end %> 

나는 p.department_id.name

운, 여러 가지, p.department.name을 시도!

아주 쉬운 문제를 알고 있기 때문에 매우 실망 스럽습니다.

도움을 주시면 감사하겠습니다.


업데이트 :

물론 heres는 내 코드 :

부서 모델 :

Class Department < ActiveRecord::Base 
    has_one :person 
end 

사람 모델 :

Class Person < ActiveRecord::BAse 
    belongs_to :department 
end 
,

쇼 사람보기 :

<% @people.each do |p| %> 
<p>Name: <%= "#{p.name}" %> </p> 
<p>Start Date: <%= "#{p.start_date}" %> </p> 
<p>Current Department: <%= "#{p.department_id}" %> <- displays relevant id 
<% end %> 

person_department_id 잘 먹으 렴 때문에, 부서 테이블에 "계정"과 관련된 것이다,이 반환되고있다.

당신의 관계로 변경하고,에보기를 개정 : <% = p.department.name의 %> 난 여전히

undefined method `department' for #<Person:0x47f9040> 

답변

0

가지고있어 관계 (hasOne의-belongsTo를) 반대 방향으로 얻는다. 외래 키는 귀하의 경우 '소속'부서에 있어야합니다.

따라서 데이터베이스 스키마를 업데이트하거나 모델에서 has_onebelongs_to으로 전환해야합니다.

자세한 내용은 here을 참조하십시오.

추신 : 또한 주목할만한 점은 모든 부서가 정확히 한 명으로 구성된 매우 이상한 조직입니다.

편집 새 데이터의 경우
코드에 일관성이 없습니다. 원래 게시물에 p.department_id을 사용하고 나중에 p.person_department_id을 사용했습니다.
레일은 외래 키 이름을 읽을 수 없으므로 모델 이름_id가 기본적으로 사용됩니다. 당신이 다른 것을 원하면, specify value explicitly.

또한 새로운 답변이 아닌 질문에 업데이트 된 코드를 게시하십시오. 누군가는 혼란 스러울 수 있습니다.

+0

departments 테이블에 person_id를 삽입하는 것은 의미가 없으며, 3 개의 부서 만 있고 그 테이블을 사용하여 보유 할 수 있습니다. 관계를 바꾸지 않으려 고 시도하지만, 다시, 내보기 내에서 부서 이름 값을 돌출시킬 수 있습니까? –

+0

@snomy_mcnoodle'p.department.name' 정말 공식 레일 가이드는 그렇게 어려운 것이 아닙니다. –

+0

# ​​ –