2009-06-27 14 views
6

FinancialDocument#document_type model özniteliğim var. Ben ... kullanıcı Strings oluşan bir Array tarafından doldurulan bir HTML seçeneğini menüden belge türünü seçmesi için her seçeneğin, görüntülenen etiket içinRaylarda Bir Dizi Dizisi'ni kullanarak HTML seçim menüsünü nasıl uygularım?

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

gibi ve değer özdeş olacağını döndü olurdu.

select ve collection_select yardımcılarına baktım, ancak yalnızca bir String değeri değil, bir alt model seçmeye yönelik görünüyorlar. Onları amacına nasıl bükebileceğimi bulamadım. İşte

Ben

undefined method `merge' for :to_s:Symbol 

orada mı ... ...

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 

bu hatayı alıyorum (I Haml değil Erb kullanıyorum) bunu yapmaya çalışıyorum nasıl Bunun için kullanabileceğim farklı bir yardımcısı mı? Ya da select veya collection_select'u kullanmanın bir yolu?

cevap

11

Bir ActiveRecord koleksiyonu var mı? Kod bakmak öyle görünmüyor. select yardımcı programını kullanabilirsiniz. Eğer form_for ile oluşturulan formu nesne üzerinde etiketi çağırırsanız

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

Ayrıca, @financial_document geçmesine gerek yoktur.

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

yapacağız sanırım.

+0

Teşekkürler, ama bu benim için işe yaramadı ... [["Fatura"], ["PS"], ["Paketleme fişi"], ["Diğer"]] için tanımlanmamış bir yöntem "birleştir": Array – Ethan

+1

oh, ilk argümanı kaldırın ve sorun yok. –

İlgili konular