0

我有三个模型,我想相互交互。

Kase,个人和公司。

我(我认为)正确设置了关系:

class Kase < ActiveRecord::Base
#HAS ONE COMPANY
has_one :company

#HAS MANY PERSONS
has_many :persons


class Person < ActiveRecord::Base
belongs_to :company

class Company < ActiveRecord::Base
has_many :persons
def to_s; companyname; end

我已将选择字段放在创建新的 Kase 视图上,创建新的人员视图如下:

<li>Company<span><%= f.select :company_id, Company.all %> </span></li>

以上所有内容都成功显示了一个下拉菜单,其中动态填充了公司中的公司名称。

我要做的是在 kase 和人员 show.html.erb 中显示公司记录的联系人。

例如,如果我有一家名为“Acme, Inc.”的公司。并创建一个名为“Random Case”的新 Kase,并在创建新案例页面“Acme, Inc.”中选择。从公司下拉菜单中。然后,我想在“Random Case”show.html.erb 上显示“Acme, Inc”和“Acme, Inc. Mobile”等。

我希望这对某人有意义!

谢谢,

丹尼

编辑:kases_controller

def show
@kase = Kase.find(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @kase }
  format.pdf { render :layout => false }

  prawnto :prawn => { 
             :background => "#{RAILS_ROOT}/public/images/jobsheet.png",

             :left_margin => 0, 
             :right_margin => 0, 
             :top_margin => 0, 
             :bottom_margin => 0, 
             :page_size => 'A4' }
end   end
4

2 回答 2

3

根据您在问题中发布的内容,我认为您的模型关联不完整:

class Kase < ActiveRecord::Base
  has_one :company
  has_many :people # Rails should handle the correct plural here
end

class Company < ActiveRecord::Base
  has_many :people
  belongs_to :kase
end

class Person < ActiveRecord::Base
  belongs_to :company
  belongs_to :kase
end

正确设置关联后,您可以访问给定案例的公司属性:

kase.company.name
kase.company.mobile

——或者对于给定的人:

person.company.name
person.company.mobile

你甚至可以通过一个人的案例进入公司:

person.kase.company.name # etc...
于 2010-04-26T15:33:40.617 回答
0

如果我理解正确,您的节目文件将包含这样的内容来显示手机号码:

# in app/views/kases/show.html.erb
<h1><%=h kase.name %></h1>

<h2>Company Information</h2>
<ul>
  <li>Company Name: <%=h kase.company.name %></li>
  <li>Company Mobile: <%=h kase.company.mobile_phone %></li>
</ul>

试一试,看看是否只需要这样。

于 2010-04-26T15:26:57.683 回答