2014-05-13 3 views
8

मैं कुछ इस तरह की है। मैं इस तरह eval का उपयोग स्ट्रिंग परिवर्तित करने के लिए:रूबी में eval का उपयोग किए बिना वर्ग नाम वर्ग में कनवर्ट करें?</p> <pre><code>string = "Post" </code></pre> <p>मैं एक वर्ग के नाम शाब्दिक स्ट्रिंग परिवर्तित करने के लिए करना चाहते हैं:

eval(string) #=> Post 

एक जावास्क्रिप्ट डेवलपर मैं eval से बचने की कोशिश होने के नाते। रूबी में ऐसा करने का कोई बेहतर तरीका है? या इसे संभालने का पसंदीदा तरीका eval का उपयोग कर रहा है?

+3

क्या आप सादे रूबी पर रेल पर हैं? – xlembouras

+1

सादा रूबी। मुझे पता है कि रेल पर रूबी के पास इस विधि के लिए एक तरीका है http://stackoverflow.com/questions/3464007/ruby-convert-class-name-in-string-to-actual-class – Stratus3D

उत्तर

21

आप कोशिश कर सकते हैं

class Post 
end 

Object.const_get("Post") 

कौन सा Post वर्ग

18

उपयोग Module.const_get

string = "Fixnum" 
clazz = Object.const_get(string) 
clazz.name # => "Fixnum" 

आप एक रेल संदर्भ में कर रहे हैं, तो आप भी `#constantize पद्धति पर उपयोग कर सकते हैं रिटर्न स्ट्रिंग

clazz = string.constantize # => Fixnum 
+0

स्थिरता दूसरों की तुलना में सर्वोत्तम है – vajapravin

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