Liquid Standard默认过滤器未显示默认值

时间:2014-06-18 00:19:19

标签: ruby liquid

给出以下代码:

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

上面的代码应该输出Hello Friend,而是显示Hello

2 个答案:

答案 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中,因此它现在可以正常工作:

https://rubygems.org/gems/liquid/versions