Рельсы и формы: выпадающий с диапазоном чисел и неограниченным

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

<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)

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

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

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

Решение Вопроса

Это будет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

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

 06 апр. 2012 г., 07:11
ответ исправлен.
 Hommer Smith06 апр. 2012 г., 06:30
Это добавляет неограниченное со значением & quot; Неограниченное & quot ;, и я хотел бы получить нулевое значение ...

Ваш ответ на вопрос