【问题标题】:select_tag rails, show only particular listselect_tag rails,仅显示特定列表
【发布时间】:2013-04-01 03:15:55
【问题描述】:

我有这个模型供公司使用

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%>

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 forms html-select


    【解决方案1】:
    <%= 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%>
    

    【讨论】:

    • 针对您的新问题进行了更新。
    猜你喜欢
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多