2012-04-09 4 views
10

Кажется, что имеется только небольшая документация по функции grouped_select в simple_form 2.0 по адресу http://simple-form.plataformatec.com.br/#usage/collections. Документация предлагает следующую линию:Создание optgroup с использованием simple_form gem on Rails 3.2

f.input :country_id, :collection => @continents, :as => :grouped_select, :group_method => :countries 

Но это, кажется, не дает мне достаточно контекста, чтобы заставить его работать. Вот что у меня есть.

У меня есть три модели: Запрос, объявление и Вставки

Объявление 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> 

Может кто-нибудь предложить какие-либо рекомендации о внесении этой simple_form особенность работы? Я бы очень признателен!

Пожалуйста, дайте мне знать, если я скажу вам что-нибудь еще о приложении, если у вас есть представление о том, как выполнить это свойство.

Заранее благодарен!

UPDATE: Я был в состоянии получить что-то частично работает с использованием:

= f.input(:insertion_id, :collection => Ad.order(:name), :as => :grouped_select, :group_method => :insertions) 

Проблема с этим состоит в том, что нет никакого способа, чтобы указать, какой столбец используется в качестве отображения текста от того, что я могу сказать , Я приветствую любые материалы.

ответ

20

После некоторых дополнительных исследований, глядя лучше на документацию и играя с синтаксисом, я решил то, что искал.

Стандартные рельсы grouped_collection_select выглядит следующим образом:

= f.grouped_collection_select(:insertion_id, Ad.order(:name), 
           :insertions, :name, :id, :title, 
           include_blank: "Please Choose...") 

Это может быть переделано в использовании 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...") 

Я надеюсь, что помогает другим людям в будущем.

+0

спас мою задницу. Благодаря! : D –

0

Альтернативный метод:

<%= f.input :product_category do %> 
    <%= f.select :product_category, grouped_options_for_select(Product.PRODUCT_CATEGORY), include_blank: true %> 
    <% end %> 

Это хорошо работает, когда вы пытаетесь сформировать OPTGROUP выбора без использования активных записей модальностей.

Ссылка: https://github.com/plataformatec/simple_form#wrapping-rails-form-helpers и http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-option_groups_from_collection_for_select

Смежные вопросы