2011-05-11 14 views
25

मैं अपने JSON को अपने नियंत्रक से अपने दृश्य में प्राप्त करने का प्रयास कर रहा हूं। मेरी नियंत्रक में मैं कर रहा हूँ:रेल में अजीब JSON जावास्क्रिप्ट समस्या

@nodes = Node.all 
@json = @nodes.as_json(:only => [:ID, :Lat, :Lon]) 

मेरी नजर में मैं कोशिश की है:

1) var stuff = <%= @json %> 
2) var stuff = <%= @json.to_json %> 
3) var stuff = <%= @json.to_json.to_json %> 

और उन सभी ने मुझे एक त्रुटि दे। मुझे आमतौर पर "Unexpected Syntax Error &" or "Unexpected Syntax Error {"

मैंने jquery का उपयोग करने और नियंत्रक के भीतर respond_to का उपयोग करने का भी प्रयास किया है, लेकिन ऐसा लगता है कि यह भी काम नहीं करता है।

मेरे विचार कर रहे हैं कि देखने के लिए json हो रही एक बड़ा मुद्दा नहीं होना चाहिए और jQuery आवश्यकता नहीं होनी चाहिए, और वर्तमान में, मेरा पेज स्रोत की तरह दिखता है:

var stuff = [{&quot;node&quot;:{&quot;ID&quot;:1301499692582,&quot;Lat&quot;:42.3605063113369,&quot;Lon&quot;:-71.0870862191138}},{&quot;node&quot;:{&quot;ID&quot;:1301499691515,&quot;Lat&quot;:42.3605147089149,&quot;Lon&quot;:-71.0870533282532}},{&quot;node&quot;:{&quot;ID&quot;:1301431075499,&quot;Lat&quot;:42.3605456103,&quot;Lon&quot;:-71.0875239075536}} etc 

मैं & quot प्रतीकों को समझने के न (हो सकता है thats जहां सिंटेक्स त्रुटि से आ रही है) लेकिन जब मैं प्रस्तुत करना है:

[{"node":{"ID":1301499692582,"Lat":42.3605063113369,"Lon":-71.0870862191138}},{"node":{"ID":1301499691515,"Lat":42.3605147089149,"Lon":-71.0870533282532}},{"node":{"ID":1301431075499,"Lat":42.3605456103,"Lon":-71.0875239075536}} 

नोट:: json => @nodes.to_json, पेज एक सामान्य json कि वैध है renders मैं भी var stuff = '<%= @json.to_json% कर की कोशिश की है> लेकिन जब मैंकरें, यह मुझे एक अवैध टोकन त्रुटि देता है।

क्या कोई मेरी मदद कर सकता है? बहुत बहुत धन्यवाद!

उत्तर

48

इस रेल अपने स्ट्रिंग html-एन्कोडिंग के रूप में रेल में डिफ़ॉल्ट 3.

आप html_safe के रूप में अपने JSON चिह्नित करने की आवश्यकता है:

var stuff = <%= @json.to_s.html_safe %> 

ध्यान दें कि .to_s की जरूरत है क्योंकि as_json बजाय हैश देता है स्ट्रिंग। आप इसके बजाय ऐसा कर सकते हैं:

# in controller 
@json = @nodes.to_json(:only => [:ID, :Lat, :Lon]) 

#and in view 
var stuff = <%= @json.html_safe %> 
+0

बहुत बहुत धन्यवाद! अब यह स्रोत में दिखाई देता है जैसा कि माना जाता है। यदि आपको कोई फर्क नहीं पड़ता है, तो क्या आप मुझे उदाहरण दे सकते हैं कि मैं JSON में प्रत्येक ऑब्जेक्ट को कैसे एक्सेस कर सकता हूं? मैं वास्तव में इसकी सराहना करता हूं! – readmymsg123

+0

कभी नहीं। मैं समझ गया। बहुत बहुत धन्यवाद!!! – readmymsg123

+0

अच्छा! क्षमा करें, कि मैंने जल्द ही जवाब नहीं दिया। – Laas

0

मुझे लगता है कि आपको इसके चारों ओर उद्धरण डालने की आवश्यकता है, तो आप JSON में स्ट्रिंग को पार्स करने के लिए jquery से पूछ सकते हैं।

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