Ruby 液体标准默认过滤器未显示默认值

Ruby 液体标准默认过滤器未显示默认值,ruby,liquid,Ruby,Liquid,给定以下代码: content = "Hello {{name | default: 'Friend'}}" Liquid::Template.parse(content).render('name' => '') 上面的代码应该输出Hello-Friend,但是它显示的是Hello默认的过滤器,而该过滤器尚未在gem中发布(是撰写本文时的最新gem)。Liquid在看到未知过滤器时的行为似乎是忽略它并在不报告错误的情况下返回未更改的字符串 您可以使用当前主机获取默认值过滤器,如果您使用

给定以下代码:

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

上面的代码应该输出
Hello-Friend
,但是它显示的是
Hello
默认的
过滤器,而该过滤器尚未在gem中发布(是撰写本文时的最新gem)。Liquid在看到未知过滤器时的行为似乎是忽略它并在不报告错误的情况下返回未更改的字符串

您可以使用当前主机获取
默认值
过滤器,如果您使用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"

默认过滤器最终添加到3.0.0版的liquid gem中,因此它现在应该可以工作了:


天才!谢谢你的快速回复。我更改了我的
Gemfile
以使用边缘版本
gem'liquid',github:'Shopify/liquid'