6

在 HAML 中编写了一个简单的自定义过滤器,但我无法让我的 Rails 应用程序找到它。

过滤器如下所示:

# lib/haml/filters/gfmarkdown.rb
module Haml::Filters::Gfmarkdown
  include Haml::Filters::Base

  # copied from Haml::Filters::Markdown
  lazy_require 'rdiscount', 'peg_markdown', 'maruku', 'bluecloth'

  def render(text)
    # copied from Haml::Filters::Markdown
    engine = case @required
             when 'rdiscount'
               ::RDiscount
             when 'peg_markdown'
               ::PEGMarkdown
             when 'maruku'
               ::Maruku
             when 'bluecloth'
               ::BlueCloth
             end
    engine.new(gfm text).to_html  # gfm method defined elsewhere
  end
end

在我看来,我尝试像这样使用这个过滤器:

:gfmarkdown
  #{comment.body}

但我收到此错误消息:Filter "gfmarkdown" is not defined.

有什么想法可以让我的 Rails 应用程序选择我的过滤器吗?

版本:Rails 2.3.4、Haml 2.2.15。

4

1 回答 1

3

我找到了解决方案:添加一个需要过滤器的初始化程序。

# config/initializers/gfmarkdown.rb
require 'haml/filters/gfmarkdown'

如果模块层次结构与文件路径匹配,我曾认为模块lib/是自动需要的。那好吧 ;)

于 2009-12-17T15:52:38.693 回答