2011-10-16 67 views
0

我有以下型号一个Rails 3.1.1应用:Rails 3.1关联?

Company 
Member 

这两种型号有以下关联:

Company - has_many :members 
Member - belongs_to :company 

当加入的成员,我可以进入公司的ID号和记录链接成功后,我可以通过公司查找成员等。

当我在会员秀视图上工作时,我想'拉'公司的详细信息。

目前我有在表演视图:

<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

这会导致'#:0x99a8a40>' – dannymcc

+1

'的未定义局部变量或方法'成员'是否放在成员循环中(例如'<%= 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_id是在Member模型定义的,你无法通过member.company.company_id访问它。要访问相关公司模型的字段,请使用member.company.my_field

这些只会在成员循环中起作用,因为它们访问传递给块的|member|变量。

+0

感谢您的解释!完美工作。我不明白为什么在链接中不要用''来包装链接名称?仅当你想要静态元素时才这样吗?例如; <%= link_to'Company',member.company%> – dannymcc

+0

@dannymcc是的,你有这个权利。从模型属性或变量中获取链接名称时,只有在传递硬编码字符串时才会引用引号。 –

+0

太好了,再次感谢您的解释! – dannymcc

0

等等。请让我知道,如果你想澄清或更多的信息。

+0

我似乎得到了'未定义的方法'公司的错误:NilClass' – dannymcc

+1

如果您在示例的循环中使用它,它应该是'member'。而你的下一个错误将是'未定义方法'company_id'为公司....',并解决你需要改变这一行:'@ member.company.company_id'到别的东西或删除它。然后阅读一些[Ruby/Rails指南](http://guides.rubyonrails.org/getting_started.html)...这是基本的东西。 – bricker