液体过滤器不起作用(rails 应用程序)

问题描述 投票:0回答:2

我使用 Liquid 作为价格标签的模板语言,用户可以从我的网站下载。

液体单独工作正常,但自定义过滤器无法工作。他们只是什么也没做。

这是一个例子:

$ {{item.primary_offer.subscription.month_price | no_decimal}},- per month

这应该导致:

$ 199,- per month.

但是过滤器不起作用,所以结果是:

$ 199.0,- per month.

我的过滤器文件如下所示:

    module LiquidFilters
      include ActionView::Helpers::NumberHelper

      def no_decimal(input)
        number_to_currency(input.to_f, precision: 0)
      end

    end

Liquid::Template.register_filter(LiquidFilters)

我的应用程序助手呈现液体输入,如下所示:

def liquidize(content, arguments)
  Liquid::Template.parse(content).render(arguments, :filters => [LiquidFilters])
end
ruby-on-rails ruby-on-rails-4 liquid
2个回答
0
投票

我通过将 LiquidFilters 模块移动到应用程序帮助程序文件(在 ApplicationHelper 模块下)解决了这个问题。

一切突然都起作用了。

我不明白为什么这会产生影响,但它确实有效。如果有人能解释这一点,我会投票支持他们的答案。 :)


0
投票

确保文件中有此行

Liquid::Template.register_filter(LiquidFilters)

在您尝试使用过滤器之前已经过评估。您应该在

app/initializers/liquid.rb

中注册过滤器
© www.soinside.com 2019 - 2024. All rights reserved.