创建一个optgroup在Rails 3.2上使用simple_form gem

Tim*_*ght 10 ruby-on-rails optgroup simple-form

http://simple-form.plataformatec.com.br/#usage/collections的 simple_form 2.0中,似乎只有一些关于grouped_select功能的文档.文档提供了以下内容:

f.input :country_id, :collection => @continents, :as => :grouped_select, :group_method => :countries
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有给我足够的背景来使其发挥作用.这就是我所拥有的.

我有三种模式:查询,广告和插入

广告has_many插入和插入belongs_to广告查询belongs_to插入和插入has_many查询

此下拉列表用于查询视图.使用simple_form我可以= f.input :insertion, :collection => @ads至少在下拉列表中输出广告标题列表.我希望ad.title可以作为optgroup.然后我想将广告插入作为可选择的内容...所以类似于:

<select>
  <optgroup label="Ad.Title">
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
  </optgroup>
  <optgroup label="Ad.Title">
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
  </optgroup>
</select>
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供有关使这个simple_form功能有效的建议吗?我真的很感激!

如果您对如何执行此属性有所了解,请告诉我是否可以告诉您有关该应用程序的任何其他信息.

提前致谢!

更新:我已经能够使用以下部分工作:

= f.input(:insertion_id, :collection => Ad.order(:name), :as => :grouped_select, :group_method => :insertions)
Run Code Online (Sandbox Code Playgroud)

这个问题是没有办法从我能说的内容中指定用作显示文本的列.我欢迎任何意见.

Tim*_*ght 21

经过一些额外的研究,更好地阅读文档,并使用语法我已经解决了我正在寻找的东西.

标准的Rails grouped_collection_select看起来像这样:

= f.grouped_collection_select(:insertion_id, Ad.order(:name), 
                              :insertions, :name, :id, :title, 
                              include_blank: "Please Choose...")
Run Code Online (Sandbox Code Playgroud)

这可以使用simple_form 2.0重做,语法如下:

= f.input(:insertion_id, :collection => Ad.order(:name),
                         :as => :grouped_select,
                         :group_method => :insertions,
                         :group_label_method => :name,
                         :label_method => :title,
                         :include_blank => "Please Choose...")
Run Code Online (Sandbox Code Playgroud)

我希望将来可以帮助其他人.