Rails显示公司名称而不是公司ID
我在第一次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,但没有其他公司的数据库,任何想法,我哪里会出错?
感谢,
丹尼
你有
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
我不知道为什么你甚至可以调用这样的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
这应该允许您在人员和公司之间在两个方向上执行查找。
我试过了,如上所述,如果我这样做,我会得到一个异常错误: 但是,以下工作: – dannymcc 2010-04-28 12:07:12
没有测试过,你尝试添加:
belongs_to :company
在Person模型?
+1哇!正义,你键入这么长,仍然打我一秒;-) – ohho 2010-04-28 11:05:31
唯一不起作用的是,当我创建一个新的人,并从下拉选择公司我得到这个错误: 未定义的局部变量或方法'公司名'为# 编辑:没关系 - 错误留在代码从今天早些时候!谢谢大家! – dannymcc 2010-04-28 11:13:25
我现在已经修复了错误消息,但是如果我使用以下内容: 它引发异常错误。这是否应该发生? – dannymcc 2010-04-28 12:06:21