2012-09-10 10 views
7

मैं रूबी 1.9.3 और रेल 3.0.9रूबी पर रूबी में मानव पठनीय वर्ग का नाम कैसे प्राप्त करें?

के साथ एक एप्लिकेशन बना रहा हूं मेरे पास एक वर्ग है।

module CDA 
    class Document 
    def humanize_class_name 
     self.class.name.gsub("::","") 
    end 
    end 
end 

मुझे कक्षा का नाम "सीडीएडी दस्तावेज़" चाहिए।

क्या मेरा humanize_class_name विधि इसे प्राप्त करने का सही तरीका है?

या

कोई अन्य रेल के साथ उपलब्ध तरीकों में बनाया गया?

उत्तर

1

मुझे लगता है कि रेल के पास कुछ समान हो सकता है, लेकिन चूंकि आप जिस फॉर्म को चाहते हैं वह अनोखा है, आपको स्वयं को विधि तैयार करना होगा। जिस स्थिति को आप परिभाषित करते हैं वह गलत है। आपको प्रत्येक वर्ग के लिए ऐसा करना होगा। इसके बजाय, आपको कक्षा कक्षा में इसे परिभाषित करना चाहिए।

class Class 
    def humanize_class_name 
     name.delete(":") 
    end 
end 
some_instance.class.humanize_class_name #=> the string you want 

या

class Object 
    def humanize_class_name 
     self.class.name.delete(":") 
    end 
end 
some_instance.humanize_class_name #=> the string you want 
+0

FYI करें, '' tr' gsub' से के बारे में 3.5 तेजी से यहाँ है। –

+0

@AndrewMarshall मुझे पता था कि 'tr' तेज था, लेकिन मुझे नहीं पता था कि आप प्रतिस्थापन के रूप में खाली स्ट्रिंग डाल सकते हैं। धन्यवाद। – sawa

+1

'हटाएं (":") 'के बारे में क्या? – Stefan

13

आप i18n का उपयोग कर यदि आप Model.model_name.human फोन स्थानीय मॉडल का नाम पाने के लिए कर सकते हैं।

ईजी .: Event.model_name.human मेरा स्थानीय नाम लौटाता है।

डॉक्स: http://api.rubyonrails.org/classes/ActiveModel/Name.html#method-i-human

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