将更多信息添加到Rails选择列表?

时间:2010-08-07 11:19:51

标签: ruby-on-rails activerecord select associations

我在Rails应用程序中有一个选择列表下拉列表,用于创建新记录。

<li>Surveyor Name<span><%= f.select :surveyorperson_id, Person.all.collect { |x| [x.personname, x.id]}, {:selected => (@kase.surveyorperson_id rescue "")} %></span></li>

这样,用户可以从Surveyor的名单中选择他们想要与他们正在创建的案例相关联的名称。

我想做的是在括号中名字旁边列出验船师的公司名称。

目前代码如下:

<li>Appointed Company<span><%= f.select :appointedsurveyor_id, Company.all.collect {|m| [m.companyname, m.id]}, {:selected => (@kase.appointedsurveyor_id rescue "")} %></span></li>
<li>Appointed Surveyor<span><%= f.select :surveyorperson_id, Person.all.collect { |x| [x.personname, x.id]}, {:selected => (@kase.surveyorperson_id rescue "")} %></span></li>

是否可以让公司让测量员在他们的名字之后输出?

协会如下:

class Company < ActiveRecord::Base
  has_many :kases
  has_many :people

class Person < ActiveRecord::Base
  has_many :kases # foreign key in join table
  belongs_to :company

我还将公司记录的输出更改为他们的姓名而不是他们的ID号。

def to_s; companyname; end

提前致谢!

谢谢,

丹尼

1 个答案:

答案 0 :(得分:1)

您可以向Person模型添加一个方法,该方法返回一个字符串,其中包含人员姓名和他/她正在为之工作的公司:

def name_and_company
  return "#{name} [#{company.name}]"
end

如果您不想在模型中使用此功能(因为这是与视图相关的代码),您可以而不是仅仅调用

x.personname

Person.all.collect调用中,您可以使用类似

的内容
"#{name} [#{company.name}]"