【发布时间】:2009-06-19 12:51:24
【问题描述】:
我在我的应用程序中使用了液体插件。 在使用 form_for、check_box_tag 等 Rails 辅助方法时,我收到一个错误 form_for not defined..
有人知道如何通过液体插件使用rails helper方法吗?
【问题讨论】:
标签: ruby-on-rails liquid
我在我的应用程序中使用了液体插件。 在使用 form_for、check_box_tag 等 Rails 辅助方法时,我收到一个错误 form_for not defined..
有人知道如何通过液体插件使用rails helper方法吗?
【问题讨论】:
标签: ruby-on-rails liquid
不久前我刚刚处理过这个问题 - 如果您想更好地了解扩展普通过滤器需要什么(包括您可能需要的辅助方法),我发现这个 Railscast 非常有用:http://railscasts.com/episodes/118-liquid
基本上,您需要设置自己的过滤器文件并包含您要使用的帮助器模块,然后添加一个使用该帮助器的方法(过滤器)。这并不难,只需一秒钟即可设置。在 Ryan 的示例中,他在 lib 中设置了一个名为 LiquidFilters 的模块,包括他想要的数字助手并将其设置为使用货币过滤器,如下所示:
# lib/liquid_filters.rb
module LiquidFilters
include ActionView::Helpers::NumberHelper
def currency(price)
number_to_currency(price)
end
end
那么您所要做的就是记住在解析要添加的液体内容时添加 :filters => [LiquidFilters](获取您要使用的过滤器模块数组)并且它应该会自动拾取它。此方法还确保如果您想设置更多自定义过滤器或修改辅助过滤器,您可以轻松直观地执行此操作。
【讨论】:
您可以直接使用html代码,例如,而不是使用link_to(不起作用!),在液体模板中,您可以编写带有液体标签的html代码:
<a href="{link}">{{link_name}}</a>"
【讨论】:
有人知道如何通过液体插件使用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) }}
【讨论】:
看看这个名为“Clots”的 Liquid 项目。据说它解决了这个问题(我没有亲自使用过)。
【讨论】: