[英]How to globally register custom Liquid filters?
在我的 Rails 5 应用程序中,我试图全局注册一个自定义 Liquid 过滤器,但我的过滤器没有注册。
在我的root/lib
文件夹中,我保存:
# lib/liquid_filters.rb
module DatetimeFilters
def previous_business_day(datetime)
Time.previous_business_day(datetime)
end
end
Liquid::Template.register_filter(DatetimeFilters)
然后我通过液体运行它:
# app/controllers/my_controller.rb
template = Liquid::Template.parse('{{ datetime | previous_business_day }}')
result = template.render({'datetime' => Time.parse('2018-01-21 00:00:00 +0100')})
预期的输出是:
'2018-01-19 00:00:00 +0100'
但相反,输出只是变量,没有改变:
'2018-01-21 00:00:00 +0100'
我在previous_business_day
方法中输入的任何内容都将被忽略,这使我得出结论,过滤器根本没有注册。
我究竟做错了什么?
问题是当你应用过滤器previous_business_day<\/strong>它已经是一个字符串,所以试试这个:
module DatetimeFilters
def previous_business_day(datetime)
Time.previous_business_day(Time.parse(datetime))
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.