1

私は会社のためにこのモデルを持っています

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

そして、この company_type のモデル

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 に答える