Rails manquantes FormTagHelper importantes méthodes de sélection et collection_select

StackOverflow https://stackoverflow.com/questions/2360870

  •  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?

Était-ce utile?

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")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top