【问题标题】:Liquid Standard default filter not showing default value液体标准默认过滤器未显示默认值
【发布时间】:2014-06-18 00:19:18
【问题描述】:

给定以下代码:

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

上面的代码应该输出Hello Friend,但它却显示Hello

【问题讨论】:

    标签: ruby liquid


    【解决方案1】:

    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'
    【解决方案2】:

    默认过滤器终于在 3.0.0 版本的液体 gem 中添加了,所以它现在应该可以工作了:

    https://github.com/Shopify/liquid/pull/267

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 2018-06-12
      • 2017-01-20
      • 2020-08-16
      • 2017-09-27
      • 2012-10-15
      相关资源
      最近更新 更多