2012-05-04 15 views
6

में विकल्प जोड़ना मैं संग्रह_ चयन क्षेत्र का उपयोग कर रहा हूं, लेकिन विकल्पों को किसी डिफ़ॉल्ट मॉडल के साथ प्रीपेड करने की आवश्यकता है, जो किसी विशेष मॉडल रिकॉर्ड का प्रतिनिधित्व नहीं करता है और इसका उपयोग अपुलेट फ़ील्ड को NULL पर सेट करने के लिए किया जाता है। लेकिन मुझे ऐसा करने का कोई रास्ता नहीं मिल रहा है।रेल: संग्रह_select

यदि आपको कोई और जानकारी चाहिए, तो पूछने की आवश्यकता नहीं है। मानक फॉर्म हेल्पर्स के साथ रेल 3.2.3 का उपयोग करना।

पीएस मुझे पता है कि मैं ऐसा कुछ कर सकता हूं:

@parents = ['default_name','nil'] 
@parents << Model.all.map {|item| [item.name,item.id]} 

लेकिन मुझे लगता है कि एक और शानदार तरीका है।

उत्तर

15

वहाँ एक है:

f.collection_select(:author_id, Author.all, :id, :name_with_initial, 
        :include_blank => "Nothing selected") 

वहाँ भी एक ऐसी ही विकल्प है: include_blank विकल्प आपको collection_select सहायक विधि करने के लिए पारित कर सकते हैं कहा जाता है: प्रॉम्प्ट, इसे भी देखें।

+1

ग्रेट धन्यवाद। उस परम ध्यान नहीं दिया। बेहतर दिखेंगे। – Almaron

+0

'प्रॉम्प्ट' और ': include_blank' का संयोजन कस्टम 'चयन' के बजाय वास्तव में साफ है। धन्यवाद –

1

ऐसा कुछ आपके विचार में स्वीकार्य है?

collection_select :field1, :field2, @models+[Model.new(name: "default_name")], :name, :id 
10

आप शायद चयन बजाय का उपयोग कर सकते हैं:

f.select(:item_id, @items.collect {|p| [ p.name, p.id ] } + ['Or create a new one like','new'], {:include_blank => 'Please select a item'}) 
+0

यह वही था जो मुझे चाहिए, धन्यवाद! – Thomas