3

我在我的应用程序中使用液体插件。在使用 form_for、check_box_tag 等 Rails 辅助方法时,我收到一个错误 form_for not defined..

有人知道如何通过液体插件使用rails helper 方法吗?

4

4 回答 4

5

不久前我刚刚处理过这个问题——如果你想更好地理解扩展普通过滤器需要什么(包括你可能想要的辅助方法),我发现这个 Railscast 非常有用: http ://railscasts.com/episodes /118-液体

基本上,您需要设置自己的过滤器文件并包含您要使用的帮助器模块,然后添加一个使用该帮助器的方法(过滤器)。这并不难,只需一秒钟即可设置。在 Ryan 的示例中,他在 lib 中设置了一个名为 LiquidFilters 的模块,包括他想要的数字助手并将其设置为使用货币过滤器,如下所示:

# lib/liquid_filters.rb
module LiquidFilters
  include ActionView::Helpers::NumberHelper

  def currency(price)
    number_to_currency(price)
  end
end

然后你所要做的就是记住当你解析要添加的液体内容时 :filters => [LiquidFilters] (获取你想要使用的过滤器模块数组)并且它应该自动拾取它。此方法还确保如果您想设置更多自定义过滤器或修改辅助过滤器,您可以轻松直观地执行此操作。

于 2009-06-19T13:46:40.493 回答
1

您可以直接使用 html 代码作为实例,而不是使用link_to(不起作用!),在液体模板中,您可以编写带有液体标签的 html 代码:

<a href="{link}">{{link_name}}</a>" 
于 2011-10-03T22:26:27.153 回答
1

有人知道如何通过液体插件使用rails helper 方法吗?

Liquid 有自己的助手,称为过滤器。请参阅https://github.com/Shopify/liquid/wiki/Liquid-for-Designers

您可以决定在将值传递给液体之前应用帮助程序,或者扩展液体注册您自己的过滤器(请参阅https://github.com/Shopify/liquid/wiki/Liquid-for-Programmers)。

如果您将 Liquid 注册为 Rails 模板处理程序,Liquid 会尝试使用您的帮助程序作为过滤器。

但是,您需要使用 Liquid 语法。

{{ 'This is a long section of text' | truncate: 3 }}

不是

{{ truncate('This is a long section of text', 3) }}
于 2009-06-19T13:04:22.810 回答
0

看看这个名为“Clots”的 Liquid 项目。据说它解决了这个问题(我没有亲自使用它)。

http://github.com/ludicast/clots/tree/master

于 2009-06-19T13:01:05.467 回答