2009-12-17 40 views
6

我写了一个简单的custom filter in HAML,但我无法让我的Rails应用程序找到它。如何编写HAML自定义过滤器?

过滤器看起来是这样的:

# 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。

回答

3

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

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

我原以为在lib/模块进行自动要求如果模块的层次结构相匹配的文件路径。好吧;)

相关问题