2011-01-18 17 views
5

जब मैं उसto_xml देने अजीब परिणाम

{"New York"=>33, :Versailles => 3231}.to_xml 

मैं

<?xml version=\"1.0\" encoding=\"UTF-8\"?> 
<hash> 
    <Versailles type=\"integer\">3231</Versailles> 
    <New York type=\"integer\">33</New York> 
</hash> 

मैं, dasherize को "न्यूयॉर्क" कोई रेल की उम्मीद है | क्या ज़रूरत है?

उत्तर

2

यह समस्या पुल अनुरोध के विलय के माध्यम से बंद कर दिया है 445: https://github.com/rails/rails/pull/445

रिक्त स्थान अब dasherized जाएगा (। और निजी _dasherize विधि रिक्त स्थान को संभालने के लिए बढ़ाया गया है)

{ "न्यूयॉर्क" => 33} .to_xml इस एल डाल के लिए में

..<New-York type=\"integer\">33</New-York>..

धन्यवाद परिणाम होगा आठवें टिकट & स्टैक ओवरफ्लो प्रश्न (जो चर्चाओं में अधिक जानकारी जोड़ता है); प्रदान की गई सारी जानकारी की मदद से, मैं अपनी पहली रेल प्रतिबद्धताओं को बनाने में सक्षम था!

0

मैं भी वही चीज़ देख रहा हूं।

डॉक्स के अनुसार :dasherize विकल्प to_xml को चाल करना चाहिए।

कुछ कॉन्फ़िगरेशन विकल्पों के माध्यम से उपलब्ध हैं। [...] इस व्यवहार को नियंत्रित किया जा सकता है: केवल,: छोड़कर,: skip_instruct,: skip_types,: dasherize और: camelize [...] डिफ़ॉल्ट सभी कॉलम नामों को dasherize करना है, लेकिन आप इस सेटिंग को अक्षम कर सकते हैं : झूठी करने के लिए dasherize। सेटिंग: सच्चाई को कम करने के लिए सभी कॉलम नामों को कम किया जाएगा - यह भी ओवरराइड करता है: dasherize।

तो, यह कैसा दिखाई देता कम से कम:

asdf.to_xml(:dasherize => true) 

यह करना चाहिए, और :camelize विकल्प यह मजबूर करना चाहिए जोड़ने।

=> "<?xml version="1.0" encoding="UTF-8"?>\n<Hash>\n <New York type="integer">33</New York>\n <Versailles type="integer">3231</Versailles>\n</Hash>\n" 

तो, शायद कोई 'विसंगति को विभाजित कर सकता है।

+0

बात यह है कि डाशेरिज डैश के लिए अंडरस्कोर बदल रहा है, न कि अंतरिक्ष को डैश करने के लिए। Camelize के लिए वही बात: "New_York महान है"। Comelize = "NewYork महान है"। फिर भी to_xml हमें एक विकृत xml – standup75

+0

के साथ नहीं छोड़ना चाहिए dasherize और space के बारे में, अच्छा बिंदु! Duh !, और, हाँ, to_xml वैध एक्सएमएल प्रस्तुत करना चाहिए या अपवाद बढ़ा देना चाहिए या कम से कम समस्या का हमें सूचित करने का एक तरीका है। –

0

आम तौर पर डेटाबेस फ़ील्ड में रिक्त स्थान नहीं होते हैं, इसलिए #to_xml के संदर्भ में आपका उदाहरण एक कचरा-इन-कचरा-आउट स्थिति है।

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