Rails manquantes FormTagHelper importantes méthodes de sélection et collection_select
-
23-09-2019 - |
Question
Vous pouvez le faire lorsque vous utilisez form_for(@model...)
:
collection_select(:subscription, :duration, ["Some", "Values"], :to_s, :to_s, {:prompt => true})
Et la sortie est quelque chose comme ceci:
<select id="subscription_duration" name="subscription[duration]">
<option value="">Please select</option>
<option value="Some">Some</option>
<option value="Values">Values</option>
</select>
Si vous utilisez un formulaire sans un modèle, vous n'avez pas cette belle méthode d'aide pour créer les balises <option>
pour vous. , Vous avez au lieu de le faire:
select_tag("subscription", '<option value="Some">Some</option><option value="Values">Values</option>')
FormOptionsHelper travailler ensemble sur une forme enroulant un modèle , et ils ont le select
et collection_select
pour rendre la vie facile. Pour une form_tag
plaine (sans modèle), cependant, il n'y a pas FormOptionsTagHelper. FormTagHelper a un méthode select_tag
, mais vous devez écrire manuellement les options qui est un déchet. Il semble que cela a été corrigé quelque part.
Je pourrais écrire mon aide pour se débarrasser d'écrire ces balises option manuellement, mais c'est ce que FormOptionsHelper#collection_select
ne ... Y at-il un équivalent là-bas pour les formulaires sans modèles?
La solution
sélectionnez et collection_select peut être appelé sans modèle. J'utilise habituellement une combinaison de deux mots importants, et un tableau de paires [étiquette, valeur] pour sélectionner. Le seul inconvénient est d'avoir à utiliser le format abc [xyz].
Vous avez essayé d'utiliser options_for_select ?
select_tag 'Account', options_for_select({ "Basic" => "$20", "Plus" => "$40" }, "$40")