给定以下代码:
content = "Hello {{name | default: 'Friend'}}"
Liquid::Template.parse(content).render('name' => '')
上述代码应该输出
Hello Friend
,但实际上它显示的是Hello
。default
过滤器虽然已经在主分支中, 但目前尚未在gem中发布(2.6.1是撰写本文时的最新版本)。当Liquid看到未知过滤器时,其行为似乎是忽略它并返回未更改的字符串而不报告错误。default
过滤器,这很容易,但您可能不想使用未发布的代码。否则,您可以将其复制到您的代码中,直到有一个包含它的发布版本。module MyFilters
def default(input, default_value = "")
is_blank = input.respond_to?(:empty?) ? input.empty? : !input
is_blank ? default_value : input
end
end
Liquid::Template.register_filter(MyFilters)
content = "Hello {{name | default: 'Friend'}}"
Liquid::Template.parse(content).render("name" => '')
# => "Hello Friend"
默认过滤器已经在 Liquid 宝石的 3.0.0 版本中最终添加,因此现在应该可以正常工作:
Gemfile
更改为使用最新版本的gem 'liquid', github: 'Shopify/liquid'
。 - scarver2