Carriles FormTagHelper falta importantes métodos de selección y collection_select
-
23-09-2019 - |
Pregunta
Puede hacer esto cuando se utiliza form_for(@model...)
:
collection_select(:subscription, :duration, ["Some", "Values"], :to_s, :to_s, {:prompt => true})
Y la salida es algo como esto:
<select id="subscription_duration" name="subscription[duration]">
<option value="">Please select</option>
<option value="Some">Some</option>
<option value="Values">Values</option>
</select>
Si se utiliza un formulario sin un modelo, que no tienen ese método de ayuda agradable para crear las etiquetas <option>
para usted. En su lugar, usted tiene que hacer esto:
select_tag("subscription", '<option value="Some">Some</option><option value="Values">Values</option>')
FormOptionsHelper trabajar juntos en un formulario envolver un modelo , y tienen la select
y collection_select
para hacer la vida más fácil. Para una form_tag
liso (sin un modelo), sin embargo, no hay tal FormOptionsTagHelper. FormTagHelper tiene un select_tag
método, pero se tienen que escribir manualmente las opciones que es un desperdicio. Parece que esto se ha solucionado en alguna parte.
Podría escribir mi propio ayudante para deshacerse de escribir esas etiquetas de opción de forma manual, pero eso es lo que lo hace FormOptionsHelper#collection_select
... ¿Hay un equivalente a cabo allí por formas sin modelos?
Solución
seleccione y collection_select se puede llamar sin un modelo. Que suelen utilizar una combinación de dos palabras significativas, y una serie de pares [etiqueta, valor] para seleccionar. El único inconveniente es tener que utilizar el abc formato [xyz].
Ha intentado utilizar options_for_select ?
select_tag 'Account', options_for_select({ "Basic" => "$20", "Plus" => "$40" }, "$40")