Вопрос по drop-down-menu, ruby-on-rails, forms – Рельсы и формы: выпадающий с диапазоном чисел и неограниченным

5

У меня есть это прямо сейчас:

<code><%= f.select :credit, (0..500) %>
</code>

Это приведет к этому:

<code><option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
...
</code>

Как бы я добавил еще один вариант в этот выбор, который будет & quot;All& Quot; и какое значение должно бытьnil?

Ваш Ответ

2   ответа
9

Это будетalmost делай что хочешь:

<%= f.select :credit, ((0..500).map {|i| [i,i] } << ["No limit",nil]) %>

select может взять несколько форматов для списка опций. Один из них представляет собой массив массивов, как указано здесь. Каждый элемент во внешнем массиве представляет собой массив из 2 элементов, содержащий отображаемый текст параметра и значение формы в указанном порядке.

map выше поворотов(0..500) в массив, как это, где отображаемая опция идентична значению формы. Затем добавляется последний вариант.

Обратите внимание, что при этом будет получено значение & quot; (пустая строка) для параметра if & quot; Unlimited & quot; выбран - если вы поместите поле выбора в форму и форма будет отправлена, браузер отправитsomething для этого параметра формы, и нет возможности отправитьnil в качестве параметра формы явно. если тыreally хотел, чтобы вы могли использовать какой-нибудь умный javascript, чтобы браузер вообще не отправлял парметр, но это было бы больше работы, чем простое добавление:

param[:credit] == "" and param[:credit] = nil

на ваш контроллер действий.

Это добавляет неограниченное со значением & quot; Неограниченное & quot ;, и я хотел бы получить нулевое значение ... Hommer Smith
ответ исправлен.
7

Если я правильно понимаю вопрос, вы можете использоватьoptions_for_select а такжеprompt сделать это немного более аккуратно, чем показано в выбранном ответе:

<%= f.select :credit, options_for_select(0..500), { prompt: "No Limit" } %>

Смотрите документы здесь: http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select

Похожие вопросы