2013-11-09 5 views
6

मैं जावास्क्रिप्ट के माध्यम से एक आवृत्ति var के माध्यम से लूप करने में सक्षम होना चाहता हूं लेकिन मुझे पूरा यकीन नहीं है कि इसे कैसे काम करना है।रूबी स्लिम-लैंग में प्रत्येक लूप

javascript: 
    [email protected] do |spot| 
     map.addMarker({ 
     lat: "#{spot.latitude}", 
     lng: "#{spot.longitude}", 
     title: "spot", 
     }); 
    }); 

मैं क्या करने की कोशिश की: का उपयोग @ spots.each कर <% | स्थान | %> और # {}

+0

क्या यह काम नहीं करता है? –

+1

मेरे लिए अच्छा लग रहा है। त्रुटि या समस्या क्या है? –

+0

अपरिभाषित स्थानीय चर या विधि 'स्पॉट' – trigun0x2

उत्तर

8

ऐसा लगता है कि एक बार आप javascript: स्लिम ब्लॉक में कर रहे हैं, आप भी गहरे लाल रंग का पाश नहीं कर सकते।

मैं यह ज्यादातर

- @spots.each do |spot| 
    javascript: 
    map.addMarker({ 
     lat: #{spot.latitude}, 
     lng: #{spot.longitude}, 
     title: "spot" 
    }); 

काम करने के लिए प्राप्त करने में सक्षम था, लेकिन है कि प्रत्येक addMarker कॉल जो सुंदर गूंगा लगता है के लिए अलग से स्क्रिप्ट टैग बनाता है।

आप पेज पर डेटा JSON के रूप में डालने का प्रयास कर सकते हैं और फिर जावास्क्रिप्ट में लूप कर सकते हैं। कुछ इस तरह:

javascript: 
    var spots = #{raw @spots.to_json}; 
    var ii = 0; 
    var nspots = spots.length; 
    for(;ii<nspots;++ii) { 
    theMap.addMarker(spots[ii]); 
    } 

आप यह सुनिश्चित करें कि theMap समय इस सामग्री चलाता है के द्वारा उपलब्ध है बनाना चाहते हैं, लेकिन मुझे लगता है कि इस चाल हो सकती। आपको प्रत्येक @ स्पॉट के JSON प्रारूप को भी देखना चाहिए। कैसे आप JSON सेटअप के आधार पर, प्रत्येक स्थान की तरह

{'spot': { 'latitude': ###, 'longitude': ### } } 

जिसका मतलब है कि आप भिन्नता के पाश में वस्तु होगा लग सकता है।

+0

जावास्क्रिप्ट लूपिंग पूरी तरह से काम किया! मुझे लगा जैसे यह बहुत ही आकर्षक भाषा नहीं था। धन्यवाद! – trigun0x2

+0

मुझे यह देखने में प्रसन्नता हुई कि @xmpolaris ने मूल रूप से वही उत्तर दिया - यह मेरी सोच को मान्य करता है। मदद करने में खुशी। –

2

के लिए उद्धरण के बिना आसान फिक्स लेकिन स्पॉट बहुत लंबे समय तक प्रभावी नहीं है। दृश्य संदर्भ के बजाय js में

[email protected] do |spot| 
    javascript: 
    map.addMarker({ 
     lat: "#{spot.latitude}", 
     lng: "#{spot.longitude}", 
     title: "spot", 
    }); 

2. पाश

javascript: 
    var spots = #{@spots.to_json}; 
    $(spots).each(function(index, obj) { 
    map.addMarker({ 
     lat: obj.latitude, 
     lng: obj.longitude, 
     title: "spot", 
    }); 
    }); 
संबंधित मुद्दे