液体模板默认过滤器不显示默认值

3

给定以下代码:

content = "Hello {{name | default: 'Friend'}}"
Liquid::Template.parse(content).render('name' => '')

上述代码应该输出Hello Friend,但实际上它显示的是Hello
2个回答

4
default过滤器虽然已经在主分支中, 但目前尚未在gem中发布(2.6.1是撰写本文时的最新版本)。当Liquid看到未知过滤器时,其行为似乎是忽略它并返回未更改的字符串而不报告错误。
如果您使用Bundler,则可以使用当前的主分支获取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"

1
太棒了!感谢您的快速回复。我已经将我的 Gemfile 更改为使用最新版本的 gem 'liquid', github: 'Shopify/liquid' - scarver2

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接