Domanda

sto usando simple_form gioiello per la creazione di forme Rails. http://github.com/plataformatec/simple_form

Tutto è grande, tranne che come faccio a creare una casella di selezione raggruppato? non riesce a trovare nella documentazione o di google-ing.

È stato utile?

Soluzione

Il problema è vecchio, ma è il risultato superiore per "simple_form raggruppati selezionare" Cerca con Google in ogni caso così ho pensato che il beneficio successivo lettore potrebbe da alcuni modi creativi per creare questi con l'ultima simple_form (tratto da test, che sono sempre il migliore documentazione anzi)

<%= f.input :author,
 :as => :grouped_select,
 :collection => [['Authors', ['Jose', 'Carlos']], ['General', ['Bob', 'John']]],
 :group_method => :last %>

<%= f.input :author,
 :as => :grouped_select,
 :collection => Proc.new { [['Authors', ['Jose', 'Carlos']], ['General', ['Bob', 'John']]] },
 :group_method => :last %>

<%= f.input :author,
 :as => :grouped_select,
 :collection => { ['Jose', 'Carlos'] => 'Authors' },
 :group_method => :first,
 :group_label_method => :last %>

<%= f.input :author,
 :as => :grouped_select,
 :collection => { 'Authors' => ['Jose', 'Carlos'] },
 :group_method => :last,
 :label_method => :upcase,
 :value_method => :downcase %>

Altri suggerimenti

Se Hava due modelli che sono di categoria, sottocategoria come segue:

class Category < ActiveRecord::Base
    has_many :products
    has_many :subcategories
end

class Subcategory < ActiveRecord::Base
    belongs_to :category
    has_many :products
end

Quindi è possibile utilizzare

<%= simple_form_for [:admin, @yourmodel] do |f| %>
    <%= f.input :subcategory_id, collection: Category.all, as: :grouped_select, group_method: :subcategories, prompt: "Select One" %>
    <%= f.submit "Submit" %>
<% end %>

che risultano in questo modo:

<div class="form-group grouped_select optional yourmodel_subcategory_id">
    <label class="grouped_select optional control-label" for="yourmodel_subcategory_id">Subcategory</label>
    <select class="grouped_select optional form-control" id="yourmodel_subcategory_id" name="yourmodel[subcategory_id]">
    <option value="">Select One</option>
    <optgroup label="Your 1st Category">
        <option value="This subcategory id">one subcategory belongs to Your 1st Category</option>
    </optgroup>
    <optgroup label="Your 2nd Category">
        <option value="This subcategory id">one subcategory belongs to Your 2nd Category</option>
    </optgroup>
    </select>
</div>

Spero che questo aiuti.

L'unico modo sano di mente che ho trovato per creare caselle di selezione raggruppati è quello di utilizzare il select aiutante passando un grouped_options_for_select che em <> ha prendere un parametro selected_key per l'argomento scelte (in modo da poter garantire i uno i thats stabiliti nel modello viene effettivamente selezionati). Vedrete la piena chiamata di seguito. Scusate se la sua confusione.

-# @answer is the model instance passed into simple_form_for/form_for
select(@answer.class.to_s.underscore, :question_id, option_groups_from_collection_for_select(@categories, 'questions.order(:display_order)', :name, :id, :question, @answer.question_id))

Se c'è un modo migliore per fare questo che seleziona il valore appropriato, sono tutto orecchie pure.

tl; dr:. no non vedendo alcun modo sia con form_for o simple_form_for per creare seleziona raggruppate, quanto sopra dovrebbe aiutare almeno

Ho appena avuto uno sguardo nei test pure. Se si desidera passare un valore diverso per il tag opzione, utilizzare il seguente per passare alla raccolta:

Agent = Struct.new(:id, :name)
agents = [["First", []], ["Second", [Agent.new(7, 'Bond'), Agent.new(47, 'Hitman')]]]

https://github.com/plataformatec/ simple_form / blob / master / test / ingressi / grouped_collection_select_input_test.rb

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top