繁体   English   中英

如何全局注册自定义 Liquid 过滤器?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM