2011-04-13 11 views
28

एक ही रास्ता:स्लिम टेम्पलेट्स में "जावास्क्रिप्ट" खंड में गतिशील रूबी कोड को कैसे एम्बेड करें?

javascript_tag do 
    == "var all_product_ids = #{existing_ids.to_json};" 
    == "var products_json = #{@filter.data.to_json};" 

या:

= %Q{ 
var all_product_ids = #{existing_ids.to_json}; 
var products_json = #{@filter.data.to_json}; 
} 

इस के लिए किसी भी बेहतर समाधान देखते हैं?

उत्तर

10

जो मैं करना पसंद करता हूं, वह सभी जावास्क्रिप्ट को एक अलग फ़ाइल में रखना है। ..

...

<body data-product-ids="<%= existing_ids.to_json %>" 
     data-products-json="<%= @filter.data.to_json %>"> 

js में:

उदाहरण के लिए, मैं यह कर के रूप में (jQuery) इस प्रकार है:

अपने लेआउट में

// create your application namespace 
$.myapp = {}; 
$.myapp.allProductIds = $.parseJSON($('body').attr('data-product-ids')); 
$.myapp.products = $.parseJSON($('body').attr('data-products-json')); 

तो, आप इसे जेएस में उपयोग करेंगे:

$.myapp.allProductIds 
+1

धन्यवाद! लेकिन जब आपको केवल एक या दो पंक्तियों जेएस कोड की आवश्यकता होती है, तो क्या आप अभी भी एक अलग फ़ाइल का उपयोग करेंगे? – wkang

+2

अच्छा, हाँ, यह सिर्फ "सर्वोत्तम प्रथाओं" मामले के लिए है। लेकिन फिर भी, यह आपके कोड को अधिक ठोस और बेहतर बनाता है –

68

स्लिम

javascript: 
    var all_product_ids = "#{existing_ids.to_json}"; 
    var products_json = "#{@filter.data.to_json}"; 
19
javascript: 
    var all_product_ids = #{raw existing_ids.to_json}; 
    var products_json = #{raw @filter.data.to_json}; 
+1

' 'हमले – lidaobing

+1

के बारे में सावधान रहें विधि' sanitize' के लिए रेल एपीआई जांचें – draw

3

में मैं इस के साथ एक समान समस्या थी। कोड प्रदान करने वाले अन्य लोगों ने मेरे लिए काम नहीं किया क्योंकि स्लिम मेरे चर से बचने वाला एचटीएमएल था। मैं Gon का उपयोग कर समाप्त हुआ। यह सिनात्रा के लिए है, लेकिन उनके पास रेल के लिए एक मणि भी है। उम्मीद है कि यह दूसरों को समान समस्याओं में मदद करता है।

14

https://github.com/slim-template/slim पाठ अंतर्वेशन पैरा

SLIM से डिफ़ॉल्ट रूप से HTML निकल जाता है। # {सामग्री} के लिए से बचने के लिए एक ही उपयोग # {{सामग्री}}

3

एक _your_erb_file_contain_javascript_code.erb पहले

और फिर अपने स्लिम फ़ाइल में javascript: हिस्सा बनाने के लिए:

#{ conditions ? (render 'your_erb_file_contain_javascript_code') : nil} 
1
javascript: 
    var isAdmin = "#{current_user.admin? ? 1 : 0}"; 
संबंधित मुद्दे