В Rails FormTagHelper отсутствуют важные методы select и Collection_select

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

  •  23-09-2019
  •  | 
  •  

Вопрос

Вы можете сделать это, когда используете 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 и Параметры формыПомощник работать вместе над форма, обертывающая модель, и у них есть select и collection_select чтобы облегчить жизнь.Для равнины form_tag (без модели), однако такого FormOptionsTagHelper нет. FormTagHelper имеет select_tag метод, но вам придется вручную записывать параметры, что является пустой тратой.Кажется, это где-то исправлено.

Я мог бы написать свой собственный помощник, чтобы избавиться от необходимости писать эти теги опций вручную, но это то, что FormOptionsHelper#collection_select делает...Есть ли эквивалент для форм без моделей?

Это было полезно?

Решение

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

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

select_tag 'Account', options_for_select({ "Basic" => "$20", "Plus" => "$40" }, "$40")
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top