2011-10-16 3 views
0

나는 다음과 같은 모델 레일 3.1.1 응용 프로그램이 있습니다 :Rails 3.1 연관?

Company 
Member 

두 모델에는 다음과 같은 협회 :

Company - has_many :members 
Member - belongs_to :company 

회원을 추가 할 때 나는 회사의 ID 번호와 기록을 입력 할 수 있습니다 성공적으로 연결되었으므로 회사 등을 통해 회원을 조회 할 수 있습니다.

회원 쇼보기로 작업 할 때 회사의 세부 정보를 '가져오고 싶습니다. 현재

i를 쇼보기에서 다음과 같습니다

<h1>Listing members</h1> 

<table> 
    <tr> 
    <th>Name</th> 
    <th>Mobile</th> 
    <th>Email</th> 
    <th>Qualifications</th> 
    <th>Membership</th> 
    <th>Company</th> 
    <th></th> 
    <th></th> 
    <th></th> 
    </tr> 

<% @members.each do |member| %> 
    <tr> 
    <td><%= member.name %></td> 
    <td><%= member.mobile %></td> 
    <td><%= member.email %></td> 
    <td><%= member.qualifications %></td> 
    <td><%= member.membership %></td> 
    <td><%= @member.company.company_id %></td> 
    <td><%= link_to 'Show', member %></td> 
    <td><%= link_to 'Edit', edit_member_path(member) %></td> 
    <td><%= link_to 'Destroy', member, confirm: 'Are you sure?', method: :delete %></td> 
    </tr> 
<% end %> 
</table> 

가 어떻게 관련 기업에서 필드에 끌어 가야합니까? 예를 들어 회사 모델에는 두 개의 필드 (위도와 경도)가 있습니다.

+0

여기서 이해할 수없는 뭔가가 있습니다. '<% = member.company.latitude %>'가 작동하지 않습니까? –

+0

그 결과 '# <# Class : 0x99cdcc8> : 0x99a8a40>' – dannymcc

+1

에 대해 '정의되지 않은 로컬 변수 또는 메소드'member '가 생성되었습니다 ('<% = member.membership %> '바로 아래)? –

답변

1

루프는 다음과 같이한다 :

<% @members.each do |member| %> 
    <tr> 
    <td><%= member.name %></td> 
    <td><%= member.mobile %></td> 
    <td><%= member.email %></td> 
    <td><%= member.qualifications %></td> 
    <td><%= member.membership %></td> 
    <td><%= member.company_id %></td> 
    <td><%= member.company.latitude %></td> 
    <td><%= link_to member.company.name, member.company %></td> 
    <td><%= link_to 'Show', member %></td> 
    <td><%= link_to 'Edit', edit_member_path(member) %></td> 
    <td><%= link_to 'Destroy', member, confirm: 'Are you sure?', method: :delete %></td> 
    </tr> 
<% end %> 

company_idMember 모델을 정의, 당신은 member.company.company_id를 통해 액세스 할 수 없습니다. 관련 회사 모델의 필드에 액세스하려면 member.company.my_field을 사용하십시오.

이들은 블록으로 전달되는 변수 |member|에 액세스하므로 멤버 루프에서만 작동합니다.

+0

설명 주셔서 감사합니다! 완벽하게 일했습니다. 왜 링크가 ''로 링크 이름을 싸지 않는지 이해할 수 없습니까? 정적 요소 만 필요할 때입니까?예를 들어; <% = link_to 'Company', member.company %> – dannymcc

+0

@ dannymcc 네,이 권리가 있습니다. 하드 코딩 된 문자열을 전달할 때만 모델 속성이나 변수에서 링크 이름을 가져올 때 따옴표를 사용하지 않습니다. –

+0

설명을 위대한 다시 한번 감사드립니다! – dannymcc

0

등이있다. 설명이나 추가 정보가 필요한 경우 알려주십시오.

+0

Nil을 위해 'company'가 정의되지 않은 메서드 인 'NilClass'에 대해 오류가 발생하는 것 같습니다. – dannymcc

+1

예제의 루프 내에서 사용하는 경우에는 'member'이어야합니다. 그리고 다음 오류는 회사 ....에 대해'정의되지 않은 메소드 'company_id'가 될 것이고'@ member.company.company_id'를 다른 것으로 바꾸거나 제거해야한다는 것을 해결할 것입니다. 그런 다음 [Ruby/Rails 안내서] (http://guides.rubyonrails.org/getting_started.html)를 읽으십시오. 이것은 기본적인 내용입니다. – bricker