2010-04-28 136 views
0

我在第一次Rails应用程序中取得了不错的进展,很多来自Stack Overflow上伟大社区的帮助。Rails显示公司名称而不是公司ID

我有一个具有以下车型基本应用:

加濑 人 公司 党

我在下面的方式相关联了:

class Kase 
belongs_to :company # foreign key: company_id 
has_and_belongs_to_many :people # foreign key in join table 

class Person 
has_and_belongs_to_many :kases # foreign key in join table 

class Company 
has_many :kases 
has_many :people 

class Party 
has_and_belongs_to_many :people 
has_and_belongs_to_many :companies 

目前,如果我创建了一家公司,然后创建一个新案例(kase),我可以从下拉列表中选择我想要的公司(来自公司数据库),然后在展示视图中选择我可以 - 我可以在公司成功分配到人,但在放映视图

<li>Client Company: <span><%=h @kase.company.companyname %></span></li> 

但是,如果我添加使用相同的方法一个新的人:通过使用此代码输出所选公司的情况名称

<li>Person Company: <span><%=h @person.company.company_id %></span></li> 

如果我改变了上面:使用此代码仅输出公司ID号

<li>Person Company: <span><%=h @person.company.companyname %></span></li> 

我得到以下错误:

undefined method `company' for #<Person:0x105dc4938> 

所以看起来我可以打电话给公司的ID,但没有其他公司的数据库,任何想法,我哪里会出错?

感谢,

丹尼

回答

4

你有

class Person < ActiveRecord::Base 
    has_and_belongs_to_many :kases 
end 

这意味着,你可以做

@person = Person.find(1) 
@person.kases.each do |kase| 
    puts kase.company.name 
end 

但要记住的是,为了@person.company工作,你需要具备以下条件之一:

class Person < ActiveRecord::Base 
    belongs_to :company # option 1 
    has_one :company  # option 2 
end 
+0

+1哇!正义,你键入这么长,仍然打我一秒;-) – ohho 2010-04-28 11:05:31

+0

唯一不起作用的是,当我创建一个新的人,并从下拉选择公司我得到这个错误: 未定义的局部变量或方法'公司名'为#<人:0x105e66cd8> 编辑:没关系 - 错误留在代码从今天早些时候!谢谢大家! – dannymcc 2010-04-28 11:13:25

+0

我现在已经修复了错误消息,但是如果我使用以下内容: <%= h @ kase.person.personname%> 它引发异常错误。这是否应该发生? – dannymcc 2010-04-28 12:06:21

1

我不知道为什么你甚至可以调用这样的COMPANY_ID,你确定你是不是做:

<li>Person Company: <span><%=h @person.company_id %></span></li> 

我认为这个问题是您在人员模型中缺少对公司的引用。尝试将您的Person模型更改为:

class Person 
has_and_belongs_to_many :kases # foreign key in join table 
belongs_to :company 

这应该允许您在人员和公司之间在两个方向上执行查找。

+0

我试过了,如上所述,如果我这样做,我会得到一个异常错误: <%= h @ kase.person.personname%> 但是,以下工作: <%= h @ kase.company.companyname%> – dannymcc 2010-04-28 12:07:12

1

没有测试过,你尝试添加:

belongs_to :company 

在Person模型?