【发布时间】:2014-06-18 00:19:18
【问题描述】:
给定以下代码:
content = "Hello {{name | default: 'Friend'}}"
Liquid::Template.parse(content).render('name' => '')
上面的代码应该输出Hello Friend,但它却显示Hello
【问题讨论】:
给定以下代码:
content = "Hello {{name | default: 'Friend'}}"
Liquid::Template.parse(content).render('name' => '')
上面的代码应该输出Hello Friend,但它却显示Hello
【问题讨论】:
default 过滤器,而 it is in master,尚未在 gem 中发布(2.6.1 是撰写本文时最新的 gem)。 Liquid 在看到未知过滤器时的行为似乎是忽略它并原样返回字符串而不报告错误。
您可以使用当前的 master 来获取 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"
【讨论】:
Gemfile 更改为使用边缘版本gem 'liquid', github: 'Shopify/liquid'
默认过滤器终于在 3.0.0 版本的液体 gem 中添加了,所以它现在应该可以工作了:
【讨论】: