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

у меня есть 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 ответов


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

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

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


doctypes.map!{|d| [d]}
f.select(@financial_document, :document_type, doctypes)

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