每当我尝试渲染 Liquid 时,我都会在对象/模型上收到is_haml?
错误。 是否有某种兼容性设置允许 Liquid 和 HAML 并排运行?
谢谢!
Haml 定义了一个Object#is_haml?
方法来判断当前模板上下文是否是 Haml。 我想 Liquid 的上下文对象可能在某处未定义它......你能给我一个演示这个问题的最小 Rails 应用程序的压缩包吗?
@dewski - 我在尝试在自定义液体过滤器中利用 ActionView Helpers 时遇到了一些问题。
例子:
module LiquidFilters
include ActionView::Helpers::TagHelper
include ActionView::Helpers::UrlHelper
def mailto(address, name = nil)
mail_to(address, name, :encode => "javascript")
end
end
Liquid::Template.register_filter(LiquidFilters)
然后我收到以下错误...
Liquid error: undefined method `is_haml?' for #
一个简单的解决方法是在模块中也包含 Haml::Helpers ...
include Haml::Helpers
不确定这是否适用于您的情况。
最好的祝福,
大卫鲍德温
我认为这完全符合我的需要,我会对此进行测试并回复您。 谢谢!
谢谢大卫,解决了这个问题。 我将保持开放状态,看看 Nathan 想如何处理这个问题。 Haml 是否应该检查是否定义了 Liquid,如果是,包括它?
对 Liquid 的特定处理不是这里的正确方法。 我们仍然需要找出根本问题并解决它。 如果可能的话,我仍然想要一个 Rails 应用程序 repro。
这是一个准系统应用程序,应该为您产生问题......
git clone git://github.com/baldwindavid/liquidhaml.git
cd liquidhaml
rake db:setup
script/server
唯一帖子的“显示”视图应显示错误。 然后看看...
config/initializers/liquid.rb
取消注释include Haml::Helpers
应该使过滤器按预期工作。
此示例使用 Rails 2.3.5 和以下 gem...
config.gem "haml", :version => "3.0.4"
config.gem "liquid", :version => "2.0.0"
如果您需要额外的,请告诉我。 谢谢。
最好的祝福,
大卫鲍德温
关闭此问题已过时。 如果有人仍然受到它的影响,请告诉我,我会重新开放。
谢谢@baldwindavid 。 添加 include Haml::Helpers 解决了这个问题。
最有用的评论
@dewski - 我在尝试在自定义液体过滤器中利用 ActionView Helpers 时遇到了一些问题。
例子:
然后我收到以下错误...
一个简单的解决方法是在模块中也包含 Haml::Helpers ...
不确定这是否适用于您的情况。
最好的祝福,
大卫鲍德温