2012-06-06 12 views
7

मैं अपने नियंत्रक में इस तरह की एक रूबी सरणी है:रूबी सरणी से जेएस सरणी में रेल- 'उद्धरण'?

@location_list = [ 
     ['Mushrooms', 3], 
     ['Onions', 1], 
     ['Olives', 1], 
     ['Zucchini', 1], 
     ['Pepperoni', 2] 
     ] 

और मैं मेरे विचार में इस तरह यह पकड़ने हूँ:

location_list = "<%= @location_list.to_json %>"; 

लेकिन अगर मैं चेतावनी (location_list) करते हैं, मैं मिलता है:

[[&quot;Mushrooms&quot;,3],[&quot;Onions&quot;,1],[&quot;Olives&quot;,1],[&quot;Zucchini&quot;,1],[&quot;Pepperoni&quot;,2]] 

मैं उन उद्धरण के बिना संवाददाता वस्तु कैसे प्राप्त करूं?

उत्तर

25

प्रयास करें:

<%= raw @location_list.as_json %> 

to_json का उपयोग करते हुए एक स्ट्रिंग प्रतिपादन खत्म हो जाएगा, एम्बेडेड डबल उद्धरण के साथ, और जे एस-भाग निकले करने की आवश्यकता होगी। और यह एक स्ट्रिंग होगा, एक सरणी नहीं।

+0

मैंने कोशिश की। मुख्य समस्या यह है कि जब कच्चे या html_safe करते हैं तो मैं उस var का उपयोग करने का प्रयास करते समय 'अप्रत्याशित पहचानकर्ता' (कंसोल में) देखता हूं। भले ही मैं स्रोत देखूं, मैं इसे देख सकता हूं: var location_list = "[[" मशरूम ", 3], [" प्याज ", 1], [" जैतून ", 1], [" जुचचिनी ", 1], [ "पेपरोनी", 2]] "; console.log (location_list); क्या हो रहा है? –

+0

@ होमरस्मिथ आप इसका उपयोग करने की कोशिश कैसे कर रहे हैं? इसके अलावा, अगर इसे वास्तव में उद्धृत किया गया है, तो यह एक स्ट्रिंग है - एक सरणी नहीं; क्या आपने 'as_json' कोशिश की? –

+0

मैं इसे कंसोल में दिखाने की कोशिश कर रहा हूं ... असल में मैं रूबी से जेएस तक एक सरणी पास करना चाहता हूं ... अगर मैं रूबी सरणी को इस तरह बदलता हूं: @location_list = [1,3,4] - - मुझे वह त्रुटि नहीं मिली है। यह तब होता है जब सरणी के अंदर तार होते हैं जिन्हें मुझे अपने क्रोम कंसोल में 'अप्रत्याशित पहचानकर्ता' मिलता है। –

-1

यह मेरे लिए काम किया:

<%= @location_list.to_s.gsub(''', '') %> 

मूल रूप से .to_s का उपयोग एक स्ट्रिंग के लिए पूरे सरणी परिवर्तित करने के लिए, तो का उपयोग .gsub(''','') उन्हें कुछ भी नहीं के साथ की जगह उद्धरण हटाने के लिए।

+0

डाउनवोट क्यों? – andrewcockerham

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