给出以下代码:
content = "Hello {{name | default: 'Friend'}}"
Liquid::Template.parse(content).render('name' => '')
上面的代码应该输出Hello Friend
,而是显示Hello
答案 0 :(得分:4)
default
过滤器虽然it is in master尚未在gem中发布(2.6.1是写作时的最新宝石)。看到未知过滤器时,Liquid的行为似乎是忽略它并在不报告错误的情况下返回字符串。
您可以使用当前主数据来获取default
过滤器,如果您使用的是Bundler,这很容易,但您可能不想使用未发布的代码。否则,您可以将其复制到您的代码中,直到有一个包含它的版本:
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"
答案 1 :(得分:0)
默认过滤器最终已添加到版本3中的液体gem中,因此它现在可以正常工作: