2009-06-27 14 views
6

Tengo un atributo de modelo FinancialDocument#document_type. Me gustaría que el usuario pueda seleccionar el tipo de documento a partir de un menú de selección de HTML poblado por una matriz de cadenas ...En Rails, ¿cómo puedo implementar un menú de selección HTML usando una matriz de cadenas?

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

Para cada opción, la etiqueta que se muestra y volví valor sería idéntica.

Miré a los ayudantes select y collection_select, pero parecen estar orientados a seleccionar un modelo hijo, no simplemente un valor String. No podría descubrir cómo doblarlos para mi propósito.

Así es como estoy tratando de hacerlo (estoy usando Haml, no 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 

consigo este error ...

undefined method `merge' for :to_s:Symbol 

¿Existe una diferente ayudante que podría usar para esto? O una forma de utilizar select o collection_select?

Respuesta

11

¿Es Doctypes una colección ActiveRecord? Mirando el código, no parece ser así. Puede usar el ayudante select.

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

Además, no es necesario pasar @financial_document si se llama a la etiqueta en el objeto formulario creado con form_for.

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

lo haré, creo.

+0

Gracias, pero eso no funcionó para mí ... método indefinido 'merge 'para [[" Factura "], [" PS "], [" Resbalón de embalaje "], [" Otro "]]: Matriz – Ethan

+1

oh, a la derecha, elimina el primer argumento y está bien. –

Cuestiones relacionadas