В Rails, как я могу реализовать меню выбора HTML, используя массив строк? - PullRequest
6 голосов
/ 27 июня 2009

У меня есть FinancialDocument#document_type атрибут модели. Я хотел бы позволить пользователю выбрать тип документа из меню выбора HTML, заполненного массивом строк ...

doctypes = [ 'Invoice', 'Packing slip', 'Other' ]

Для каждой опции отображаемая метка и возвращаемое значение будут идентичны.

Я посмотрел на помощников select и collection_select, но они, похоже, ориентированы на выбор дочерней модели, а не просто на строковое значение. Я не мог понять, как согнуть их для своей цели.

Вот как я пытаюсь это сделать (я использую Haml, а не Erb) ...

form_for(@financial_document) do |f|
  - doctypes = [ 'Invoice', 'PS', 'Packing slip', 'Other' ]
  = f.collection_select @financial_document, :document_type, \
      doctypes, :to_s, :to_s, :include_blank => true

Я получаю эту ошибку ...

undefined method `merge' for :to_s:Symbol

Есть ли другой помощник, который я мог бы использовать для этого? Или способ использования select или collection_select?

Ответы [ 2 ]

11 голосов
/ 27 июня 2009

Является ли тип документа коллекцией ActiveRecord? Глядя на код, это не так. Вы можете использовать помощник select.

= f.select :document_type, doctypes, :include_blank => true

Кроме того, вам не нужно передавать @financial_document, если вы вызываете тег на объекте формы, созданном с помощью form_for.

1 голос
/ 27 июня 2009
doctypes.map!{|d| [d]}
f.select(@financial_document, :document_type, doctypes)

сделаю это, я думаю.

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