2009-11-13 12 views
37

collection_select और select रेल सहायतागार: मुझे किस का उपयोग करना चाहिए?रेल संग्रह_ चयन करें बनाम

मैं दोनों तरीकों से कोई अंतर नहीं देख सकता। दोनों सहायक एक संग्रह लेते हैं और एक चुनिंदा टैग के अंदर विकल्प टैग उत्पन्न करते हैं। क्या कोई परिदृश्य है जहां collection_selectselect से बेहतर है? या मैं कुछ भी याद कर रहा हूँ?

उत्तर

63

collection_select में मदद करता है इस्तेमाल किया जा रहा है जब आइटम की सूची ActiveRecord वस्तुओं की एक सरणी है इरादा है पर एक नजर है। collection_selectselect के शीर्ष पर बनाया गया है, इसलिए यह एक सुविधाजनक तरीका है जब आपको ऑब्जेक्ट्स का संग्रह प्रदर्शित करने की आवश्यकता होती है और तारों की सरणी नहीं होती है।

collection_select(:post, :author_id, Author.find(:all), :id, :name) 
+1

मिलेगा यह स्पष्ट रूप से सही जवाब है और स्वीकृति के योग्य है। @webnuwan क्या देता है? – biagidp

0

और select के बारे में, आप एक हैश के साथ उपयोग कर सकते हैं। मैं इसे ENUM के साथ उपयोग करता था।

# In a hypothetical Fruit model 
enum types: { 'Banana' => 0, 'Grape' => 1, 'Mango' => 2 } 

# In the view 
f.select :type, Fruits.types.invert 

ध्यान दें कि मैं क्रम में की विपरीत उपयोग करने का विकल्प में सही मान को दिखाने के लिए था:

<select> 
    <option value="0">Banana</option> 
    <option value="1">Grape<option> 
    <option value="2">Mango</option> 
</select> 

एक शो फ़ाइल में संदर्भित करने के लिए आप Fruit.types का उपयोग कर सकते हैं और इस वापस आ जाएगी हमारे पिछले हैश इस तरह से आप कर सकते हैं:

Fruit.types[obj.type] 

अंतिम ध्यान दें: यदि आप enum types: { 'Banana' => :banana, ... पसंद करते हैं संख्या के बजाय प्रतीकों का उपयोग कर सकते हैं और आप <option value="banana">Banana</option>

संबंधित मुद्दे