Гуманизируйте рельсы выберите помощника - PullRequest
4 голосов
/ 19 февраля 2012

В моей модели есть следующее:

  PRODUCTSTATES = %w[published coming_soon in_development cancelled]

Я использую это для заполнения раскрывающегося списка в форме, и я пытаюсь использовать humanize, чтобы список выглядел красиво, но, похоже, не могу его получить.

  <%= f.select :status, Product::PRODUCTSTATES %>

Product::PRODUCTSTATES.humanize, очевидно, не работает и не преобразует в строку перед рукой.

1 Ответ

10 голосов
/ 19 февраля 2012

Вы можете передать массив как

[['caption1', 'value1'], ['caption2', 'value2']]

в select помощник, и он будет генерировать что-то вроде

<select>
  <option value="value1">caption1</option>
  <option value="value2">caption2</option>
</select>

В вашем случае вы можете сделать так:

<%= f.select :status, Product::PRODUCTSTATES.map { |s| [s.humanize, s] } %>

Вы получите гуманизированные версии статусов, отображаемые на странице, а оригинальные (не гуманизированные) версии будут отправлены на сервер при отправке формы.

См. select и options_for_select документы для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...