2016-02-09 12 views
5

पर सभी दुकानों को फ़िल्टर करने के लिए कैसे करें हम एक वेब ऐप में तरल का उपयोग कर रहे हैं। मैंने देखा है कि Shopify ने कुछ उपयोगी फ़िल्टर लागू किए हैं जिन्हें तरल मणि में डिफ़ॉल्ट रूप से शामिल नहीं किया गया है। उदाहरण के लिए url_param_escapeमानक तरल

यह परीक्षण करने के लिए मैं इस किया था:

$ आईआरबी

'तरल' की आवश्यकता होती है तरल :: Template.parse ('{{ "&" | url_param_escape}}') .render => "&"

जाहिर है इन फिल्टर डिफ़ॉल्ट रूप से शामिल नहीं हैं। क्या वे कहीं से उपलब्ध हैं? यदि ऐसा है तो मैं उन्हें पार्सर में कहां और कैसे जोड़ूं? अन्यथा उन सभी को एक-एक करके लागू करने का मामला है या वे सभी एक ही मॉड्यूल या कुछ से आ रहे हैं?

+0

'url_param_escape' फ़िल्टर के साथ कोई समस्या प्रतीत होती है। मैंने कई अन्य लोगों को कोशिश की है (हटाएं, ऊपर उठाएं, संलग्न करें) और वे सभी काम करते हैं। लेकिन यूआरएल परम से बच कुछ भी नहीं करता है। – Albin

+0

इन अल्बिन का परीक्षण करने के लिए धन्यवाद, इस सूची में सभी लोग काम करते हैं: https://github.com/Shopify/liquid/wiki/Liquid-for- डिज़ाइनर लेकिन यहां सूचीबद्ध सभी नहीं: https: // docs। shopify.com/themes/liquid-documentation/filters/string-filters – Will

उत्तर

1

आप उन्हें स्वयं लिख सकते हैं/उन्हें लिखना चाहिए। वे बनाना आसान है।

module MyApp 
    module Liquid 
    module Filters 
     module UrlParamFilter 
     def url_param_escape(thing_to_escape) 
      CGI.escape(thing_to_escape) 
     end 
     end 
    end 
    end 
end 

तो फिर तुम इस फिल्टर रजिस्टर करने के लिए इतना है कि तरल इसका इस्तेमाल करने जानता है की आवश्यकता होगी: यहाँ url_param_escape फिल्टर का एक उदाहरण दिया गया है। मैं आमतौर पर config.after_initialize के अंदर application.rb में ऐसा करता हूं लेकिन यदि आपके पास उनमें से बहुत कुछ है तो शायद यह एक बेहतर जगह हो सकती है। यहां इसका एक उदाहरण दिया गया है:

config.after_initialize do 
    ::Liquid::Template.register_filter(MyApp::Liquid::Filters::UrlParamFilter) 
end 
संबंधित मुद्दे