2016-02-09 10 views
5

ウェブアプリケーションで液体を使用しています。私はShopifyがLiquid Gemにデフォルトで含まれていない便利なフィルターを実装していることに気付きました。例url_param_escape標準液にすべてのショップフィッシュフィルターを追加するには

それをテストするために私はこれでした:

IRB

$を '液体' 液体を:: Template.parse必要( '{{ "&" | url_param_escape}}') .render => "&"

明らかにこれらのフィルタはデフォルトで含まれていません。どこからでも入手できますか?もしそうなら、パーサにそれらをどこに追加すればよいですか?そうでない場合は、それらを1つずつ実装するケースか、またはそれらがすべて同じモジュールか何かから来るのか?

+0

「url_param_escape」フィルタに問題があるようです。私はいくつかの他のものを(削除、アップケース、追加)試して、彼らはすべて動作します。しかし、urlのparamエスケープは何もしません。 – Albin

+0

これらのAlbinをテストしていただきありがとうございます。このリストのものはすべてhttps://github.com/Shopify/liquid/wiki/Liquid-for-Designersで動作しますが、ここに記載されているものはすべてhttps:// docsです。 shopify.com/themes/liquid-documentation/filters/string-filters – Will

答えて

1

あなたは/自分で書く必要があります。それらは簡単に作成できます。ここでurl_param_escapeフィルタの実装例です:液体がそれを使用することを知っているように

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 

その後は、このフィルタを登録する必要があります。私は通常、config.after_initializeの中のapplication.rbでこれを行いますが、あなたがそれらをたくさん持っているなら、おそらくもっと良い場所に行くことができます。これはその例です:

config.after_initialize do 
    ::Liquid::Template.register_filter(MyApp::Liquid::Filters::UrlParamFilter) 
end 
関連する問題