Rails fehlt FormTagHelper wichtig wählen und collection_select Methoden
-
23-09-2019 - |
Frage
Sie können dies tun, wenn Sie form_for(@model...)
verwenden:
collection_select(:subscription, :duration, ["Some", "Values"], :to_s, :to_s, {:prompt => true})
Und der Ausgang ist so etwas wie folgt aus:
<select id="subscription_duration" name="subscription[duration]">
<option value="">Please select</option>
<option value="Some">Some</option>
<option value="Values">Values</option>
</select>
Wenn Sie ein Formular verwenden ohne ein Modell, Sie haben nicht diese netten Helfer Verfahren die <option>
Tags für Sie zu erstellen. Stattdessen haben Sie, dies zu tun:
select_tag("subscription", '<option value="Some">Some</option><option value="Values">Values</option>')
FormOptionsHelper arbeiten gemeinsam an einem Form ein Modell Einwickeln, und sie haben die select
und collection_select
Leben zu erleichtern. Für einen einfachen form_tag
(ohne ein Modell), jedoch gibt es keine solche FormOptionsTagHelper. FormTagHelper hat eine select_tag
Methode, aber Sie müssen manuell die Optionen schreiben, die eine Verschwendung ist. Es scheint, wie dies irgendwo behoben wurde.
Ich konnte meinen eigenen Helfer schreiben manuell diese Option Tags zu schreiben, um loszuwerden, aber das ist, was FormOptionsHelper#collection_select
ist ... Gibt es ein Äquivalent gibt für Formen ohne Modelle?
Lösung
wählen und collection_select kann ohne Modell genannt werden. I in der Regel eine Kombination von zwei signifikanten Wörter verwenden, und eine Reihe von Paaren [label, value] auszuwählen. Der einzige Nachteil ist mit dem Format abc verwenden [xyz].
Sie haben versucht, options_for_select ?
select_tag 'Account', options_for_select({ "Basic" => "$20", "Plus" => "$40" }, "$40")