Rotaie FormTagHelper manca importanti metodi di selezione e collection_select
-
23-09-2019 - |
Domanda
Si può fare questo quando si utilizza form_for(@model...)
:
collection_select(:subscription, :duration, ["Some", "Values"], :to_s, :to_s, {:prompt => true})
E l'uscita è qualcosa di simile:
<select id="subscription_duration" name="subscription[duration]">
<option value="">Please select</option>
<option value="Some">Some</option>
<option value="Values">Values</option>
</select>
Se si utilizza un modulo senza un modello, non si ha che metodo di supporto bello creare i tag <option>
per voi. Invece, quello che dovete fare questo:
select_tag("subscription", '<option value="Some">Some</option><option value="Values">Values</option>')
FormOptionsHelper lavorare insieme su un modulo avvolgendo un modello , e hanno la select
e collection_select
per rendere la vita facile. Per un form_tag
normale (senza modello), tuttavia, non esiste FormOptionsTagHelper. FormTagHelper ha un select_tag
metodo, ma si devono scrivere manualmente le opzioni che è uno spreco. Sembra che questo è stato risolto da qualche parte.
Potrei scrivere il mio aiuto per sbarazzarsi di scrivere questi tag opzione manualmente, ma questo è ciò che fa FormOptionsHelper#collection_select
... C'è un out equivalente lì per forme senza modelli?
Soluzione
selezionare e collection_select può essere chiamato senza un modello. Di solito uso una combinazione di due parole significative, e una serie di coppie [etichetta, valore] per selezionare. L'unico inconveniente è dover utilizzare l'abc formato [xyz].
Si è tentato di utilizzare options_for_select ?
select_tag 'Account', options_for_select({ "Basic" => "$20", "Plus" => "$40" }, "$40")