2010-03-02 3 views
1

Вы можете сделать это при использовании form_for(@model...):Rails FormTagHelper отсутствуют важные выберите и collection_select методы

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 ... Есть ли эквивалент для форм без моделей?

ответ

1

и collection_select можно назвать без модели. Обычно я использую комбинацию из двух значимых слов и массив пар [label, value] для выбора. Единственный недостаток - использовать формат abc [xyz].

Вы пытались использовать options_for_select?

select_tag 'Account', options_for_select({ "Basic" => "$20", "Plus" => "$40" }, "$40") 
Смежные вопросы