2011-03-29 7 views
8

मैं acronyms के साथ कुछ सक्रिय रिकॉर्ड को परिभाषित कर रहा हूँ। आरवीपीर्क (मनोरंजक वाहन पार्क)। जब मैं कक्षा के नाम का शीर्षक देता हूं, तो मुझे 'आरवी पार्क' मिलता है। यह वास्तव में 'आरवी पार्क' होना चाहिए। क्या ऐसा करने का कोई अच्छा तरीका है? चूंकि यह मॉडल अन्य मॉडलों के साथ कोड साझा करता है, इसलिए मुझे एक सामान्य समाधान बनाना होगा, लेकिन मैं एक के साथ आने में सक्षम नहीं हूं।परिवर्णी शब्द के लिए titleize का उपयोग करते हुए रेल में

मैं इस पर एक चर्चा देखा था, लेकिन वहाँ एक समाधान है कि मेरे लिए काम नहीं किया था। किसी अंतर्दृष्टि की सराहना की जाती है।

https://rails.lighthouseapp.com/projects/8994/tickets/2944-titleize-doesnt-take-all-uppercase-words-into-account

उत्तर

4

अद्यतन: एक्रोनिम समर्थन was added to the Rails Inflector के बाद मैं इस पोस्ट की गई। रेल 3.2 और ऊपर के लिए @ एन्सन का जवाब देखें।


इस किनारे से मामला है कि titleize के लिए नहीं बनाया गया था की तरह लग रहा है। समस्या capitalize अंदर कॉल हमेशा आरवी को आरवी में बदल देगा।

मैं उन मॉडलों के लिए एक सामान्य नाम फ़ंक्शन तैयार करूंगा जो आंतरिक रूप से self.class.titleize पर कॉल करते हैं, और फिर इसे आरवीपीर्क मॉडल में अधिभारित करते हैं।

+0

धन्यवाद, यही वह है जो मैंने किया और यह बहुत अच्छा काम करता है। –

+2

यहां एक और अधिक मजबूत 'शीर्षक' है: https://github.com/granth/titleize –

+0

@GabeKopley कैसे github.com/granth/titleize मणि पूछे जाने वाले प्रश्न के परिदृश्य के लिए काम करेगा? ऐसा लगता है कि यह सामान्य शीर्षक के रूप में काम कर रहा है – RAJ

13

आप ActiveSupport::Inflector को कॉन्फ़िगर करके ऐसा कर सकते हैं, जो titleize विधि प्रदान करता है। शुरुआत में अपने inflections को परिभाषित करें।

# config/initializers/inflections.rb 
ActiveSupport::Inflector.inflections do |inflect| 
    inflect.acronym 'RV' 
end 

परिवर्तन लेने के लिए अपने ऐप को पुनरारंभ करें। अब titleize जानता है कि "आरवी" कैसे संभालें। एक रेल सांत्वना ऊपर फायर यहां आना:

> "RvPark".titleize 
=> "RV Park" 
> "rv".titleize 
=> "RV" 

और बढ़िया उत्पाद आप inflections साथ कर सकते हैं के लिए जुड़ा हुआ दस्तावेज़ देख सकेंगे।

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