2012-04-09 5 views
10

Parece haber solo una pequeña documentación sobre la función grouped_select en simple_form 2.0 en http://simple-form.plataformatec.com.br/#usage/collections. La documentación ofrece la línea:Creación de un grupo de selección Uso de gema simple_form en Rails 3.2

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

Pero eso no parece darme suficiente contexto para que funcione. Esto es lo que tengo.

que tengo tres modelos: Consulta, anuncios, e inserciones

Anuncios Inserciones has_many e inserciones belongs_to Anuncios mensaje belongs_to de inserción, y las inserciones has_many consultas

Esta es desplegable para la vista Consulta. Usando simple_form puedo obtener = f.input :insertion, :collection => @ads para generar al menos una lista de títulos de anuncios en el menú desplegable. Me gustaría que ad.title actúe como grupo de oposición. Entonces me gustaría tener las inserciones de anuncios para servir como el contenido seleccionable ... así que algo como:

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

¿Puede cualquier persona ofrecer consejo en hacer este trabajo simple_form función? ¡Realmente lo apreciaría!

Por favor, hágamelo saber si puedo decirle algo más sobre la aplicación si tiene alguna idea sobre cómo ejecutar esta propiedad.

¡Gracias de antemano!

ACTUALIZACIÓN: He sido capaz de conseguir algo de trabajo parcialmente usando:

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

El problema con esto es que no hay manera de especificar qué columna se utiliza como el texto de la pantalla de lo que puedo decir . Doy la bienvenida a cualquier entrada.

Respuesta

20

Después de algunas investigaciones adicionales, mirando mejor la documentación y jugando con la sintaxis, he resuelto lo que estaba buscando.

Los rieles estándar grouped_collection_select se parece a esto:

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

Esto puede ser hecho de nuevo en el uso de simple_form 2.0 con la siguiente sintaxis:

= 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...") 

espero que ayuda a otras personas en el futuro.

+0

salvado mi culo. ¡Gracias! :RE –

0

Un método alternativo es:

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

Esto funciona bien cuando se está tratando de formar un optgroup seleccione sin el uso de los modales de registro activos.

Referencia: https://github.com/plataformatec/simple_form#wrapping-rails-form-helpers y http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-option_groups_from_collection_for_select

Cuestiones relacionadas