ruby-on-rails - 如何将所有 shopify 过滤器添加到标准液体中

标签 ruby-on-rails ruby liquid

我们在网络应用程序中使用液体。我注意到 Shopify 已经实现了一些有用的过滤器,这些过滤器默认情况下不包含在 liquid gem 中。例如url_param_escape

为了测试它,我这样做了:

$伊布

require 'liquid' Liquid::Template.parse('{{ " & " | url_param_escape }} ').render => " & "

显然默认情况下不包含这些过滤器。它们可以从某个地方获得吗?如果是这样,我应该在哪里以及如何将它们添加到解析器中?否则不是一个一个实现它们的情况,还是它们都来自同一个模块或其他东西?

最佳答案

你可以/必须自己写。它们很容易创建。这是 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

然后您需要注册此过滤器,以便 Liquid 知道要使用它。我通常在 config.after_initialize 中的 application.rb 中执行此操作,但如果你有很多这样的地方,它可能有更好的去处。这是一个例子:

config.after_initialize do
  ::Liquid::Template.register_filter(MyApp::Liquid::Filters::UrlParamFilter)
end

关于ruby-on-rails - 如何将所有 shopify 过滤器添加到标准液体中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35287185/

相关文章:

css - wkhtmltopdf 表格溢出水平自动分页

html - 无法在 Ruby on Rails 元素中使用 css 类

css - 我可以在 css 中使用 liquid 标签让 jekyll 在每页的基础上使用不同的背景图像吗?

c - 如何使用 ruby​​ ffi 附加一个返回字符串的 C 函数?

ruby - ActionCable channel 的 RSpec 测试中未定义方法 `stub_connection'

shopify - 如何在 Shopify 中的单个元对象页面上获取元对象值

c# - JObject 和 DotLiquid

mysql - 尝试在现有的 mysql 数据库上构建 Rails 3.2 应用程序

ruby-on-rails - rails 4 中需要的重要 rails 3.2 概念

ruby-on-rails - 使用部分,如何以 DRY 方式呈现 `striped` 表行?