Ho un'app Rails in cui sto provando a selezionare un elenco di servizi in base alla regione selezionata in un modulo. Finora, ho implementato group_collection_select per fare questo e un po 'di CoffeeScript.CoffeeScript per selezionare i campi modulo in modo dinamico in caso di modifica e carico
Funziona quando si crea un nuovo record e si seleziona una regione. Il comportamento consiste nel mostrare solo le strutture elencate per la regione selezionata. Ciò che non funziona è quando si modifica un record, selezionando le strutture si mostrano tutte le strutture raggruppate per regione invece di vincolare le strutture alla regione selezionata.
Se si seleziona un'altra regione e quindi si seleziona il motivo originale, viene visualizzato l'elenco corretto di strutture.
Mi piacerebbe imparare come rifattorizzare CoffeeScript in cui, quando si modifica il record, la funzione viene attivata sia al caricamento della pagina (durante la modifica) che al cambiamento.
Infine, ci sono casi d'uso quando transfer_from_id è impostato su nil/blank e usiamo un campo di testo chiamato transfer_from_other. Attualmente se non seleziono una funzione e compilo transfer_from_other, a causa del CoffeeScript che carica le strutture in transfer_from_id, verrà impostato il transfer_from_id dalla prima funzione nell'ambito. Mi piacerebbe farlo a dove se nessuna funzione è selezionata, il transfer_from_id è nullo quindi posso usare transfer_from_other.
Ecco ciò che il mio codice è simile:
calls.js.coffee
jQuery ->
facilities = $('#call_transfer_from_id').html()
$('#call_region_id').change ->
region = $('#call_region_id :selected').text()
options = $(facilities).filter("optgroup[label=#{region}]").html()
if options
$('#call_transfer_from_id').html(options)
else
$('#call_transfer_from_id').empty()
region.rb
has_many :facilities
facility.rb
attr_accessible :region_id
belongs_to :region
_form.html.erb estratto
<%= f.label :region %>
<%= f.collection_select(:region_id, Region.all, :id, :area, {:include_blank => true}, {:class => 'select', required: true}) %>
<%= f.label :Transfer_From %>
<%= f.grouped_collection_select :transfer_from_id, Region.order(:area), :active_facilities, :area, :id, :facility_name, {include_blank: true}, class: 'select' %>
<%= f.label :Transfer_From_Other%>
<%= f.text_field :transfer_from_other %>
Se la mia domanda e gli esempi non sono chiare, per favore fatemelo sapere e sarò felice di modificare.
provare questo http://stackoverflow.com/questions/11817496/how-to-use-selected-with-grouped-collection-select –
@rkp Grazie ma non è proprio quello che sto cercando. Si prega di rivedere la domanda e se qualcosa non è chiaro fammi sapere. – nulltek