2010-02-15 25 views
21

मेरे पास स्थिरता है जो केवल विचारों में उपयोग की जाती है, लेकिन इसका उपयोग विभिन्न स्थानों पर विभिन्न तरीकों से किया जाता है। यह विकल्प नामों की एक सरणी है, और इसका चयन चुनिंदा बक्से के लिए किया जाता है, लेकिन मैं यह देखने के लिए अन्य दृश्यों में भी इसका उपयोग करता हूं कि इस सरणी में तार पाए जाते हैं, और तदनुसार जवाब दें।रेल में दृश्य और सहायक-केवल स्थिरांक को संभालने का सबसे अच्छा तरीका

DRY रखने के लिए इसे संभालने का सबसे अच्छा तरीका क्या है?

मैंने शुरुआत में एक सहायक में स्थिर बना दिया, लेकिन यह विचारों में सुलभ प्रतीत नहीं होता है।

मैंने बाद में एक सहायक में एक विधि बनाने के लिए स्विच किया है, जो स्थिरता को छोड़कर कुछ भी नहीं करता है। हालांकि, यह वास्तव में रेल की भावना के खिलाफ प्रतीत होता है, क्योंकि अब अनिवार्य रूप से मैं निचले स्तर पर स्थिरता का उपयोग कर रहा हूं।

मैं निश्चित रूप से इसे मॉडल में चिपका सकता हूं, लेकिन वास्तव में किसी भी मॉडल के साथ ऐसा करने के लिए कुछ भी नहीं मिला है।

उत्तर

35

आप सहायकों में स्थिरांक परिभाषित कर सकते हैं, लेकिन आपको उन्हें अपने विचारों में उनके पूर्ण योग्य नाम से संदर्भित करना होगा।

application_helper.rb

module ApplicationHelper 
    MyConstant = "something" 
end 

किसी भी दृश्य में:

<%= ApplicationHelper::MyConstant %> 
+0

नियंत्रकों/मॉडलों में आप इसे टाइप करने से बचने के लिए 'एप्लिकेशनहेल्पर' शामिल कर सकते हैं। आप इसे विचारों के अंदर नहीं कर सकते हैं, क्या आप कर सकते हैं? :/ – m33lky

+0

यह पता चला है कि नियंत्रक में आप जो भी मॉड्यूल शामिल करते हैं, वह दृश्यों के लिए उपलब्ध है। – m33lky

+2

आप इसे देखने के लिए सहायक में एक विधि भी लिख सकते हैं ताकि आपको दृश्य में सहायक नाम दोहराना पड़े। – Will

5

इसे config/initializers/constants.rb में रखें और यह हर जगह उपलब्ध होगा।

+0

दुर्भाग्यपूर्ण तरह के एक वैश्विक निरंतर जब यह ही कभी देखा गया और सहायकों में उपयोग किया जाएगा जोड़ने के लिए लगता है, मुझे यकीन है कि नहीं कर रहा हूँ यह केवल उपनाम के लिए एक विधि का उपयोग करने से बेहतर है। –

+0

एफवाईआई - यह अब रेल उत्पादन 4 मामले में नहीं है - टेम्पलेट्स एक अलग नेमस्पेस में रहते हैं और एप्लिकेशनकंट्रोलर के माध्यम से स्थिरांक तक पहुंचने की आवश्यकता है: CONSTANT_NAME – Kevin