Вы можете сделать это, когда используете form_for(@model...)
:
collection_select(:subscription, :duration, ["Some", "Values"], :to_s, :to_s, {:prompt => true})
А вывод выглядит примерно так:
<select id="subscription_duration" name="subscription[duration]">
<option value="">Please select</option>
<option value="Some">Some</option>
<option value="Values">Values</option>
</select>
Если вы используете форму без модели, у вас не будет такого замечательного вспомогательного метода для создания тегов <option>
. Вместо этого вы должны сделать это:
select_tag("subscription", '<option value="Some">Some</option><option value="Values">Values</option>')
FormHelper и FormOptionsHelper работают вместе на форме, обертывающей модель , и имеют select
и collection_select
сделать жизнь проще. Однако для простого form_tag
(без модели) такого FormOptionsTagHelper не существует. FormTagHelper имеет метод select_tag
, но вы должны вручную выписать параметры, которые являются пустой тратой. Похоже, что это было где-то исправлено.
Я мог бы написать свой собственный помощник, чтобы избавиться от написания этих тегов параметров вручную, но это то, что делает FormOptionsHelper#collection_select
... Есть ли эквивалент для форм без моделей?