1

我有这个公司的模型

class Company < ActiveRecord::Base
   attr_accessible :description, :name, :type
   belongs_to :type, :class_name => "CompanyType", :foreign_key => :company_type_id
end

而这个公司类型的模型

class CompanyType < ActiveRecord::Base
  attr_accessible :name
end

然后在另一个 _form 文件中,我想创建一个仅显示公司类型为“财务”的公司列表的选择。如果该公司的类型是“石油”,则不要在下拉列表中显示它。

如何将其插入此 select_tag 代码并更改模型?

<%= select_tag :company, 
    options_from_collection_for_select(Company.order(:name), "id", "name"),
    :include_blank => true%>
4

1 回答 1

3
<%= select_tag :company, 
options_from_collection_for_select(Company.where(:type => "Financial").order(:name), "id", "name"),
:include_blank => true%>

基本上只需添加 .where(:type => "Financial"),您可以在其中添加一个简单的 .where 语句。虽然你可能想删除

Company.where(:type => "Financial").order(:name)

到您的控制器并将其保存在这样的实例变量中

@companies = Company.where(:type => "Financial").order(:name)

并让视图逻辑看起来像这样。

<%= select_tag :company, 
options_from_collection_for_select(@companies, "id", "name"),
:include_blank => true%>

编辑更新的问题

模型

class CompanyType < ActiveRecord::Base
  has_many :companies
  attr_accessible :name
end

控制器

@companies = CompanyType.where(:name => "Financial").companies.order(:name)

并让视图逻辑看起来像这样。

<%= select_tag :company, 
options_from_collection_for_select(@companies, "id", "name"),
:include_blank => true%>
于 2013-04-01T03:20:54.687 回答