如何在Haml中使用alias_method来转义html?

时间:2012-06-09 01:40:18

标签: ruby sinatra haml

我想要做的是在Haml视图中使用别名方法(在ruby文件中定义)。

我定义了一个别名方法,如下所示:

require 'sinatra'
require 'sinatra/base'
require 'data_mapper'
require 'haml'

helpers do
  include Haml::Helpers
  alias_method :h, :html_escape
end

class App < Sinatra::Base

  use Rack::MethodOverride

  # ...

end

然后我在Haml视图中使用了方法h(),如下所示:

- @notes.each do |note|
  %article{:class => note.complete? && "complete"}
    %p
      =h note.content

但是当我打开页面时出现错误:

  

NoMethodError - #:

的未定义方法`h'      

...

当我直接在haml文件上使用Haml::Helpers.html_escape()时,没有问题:

%p
  = Haml::Helpers.html_escape note.content

如何在没有错误的haml文件中使用我的别名方法?

感谢您对此问题的任何建议或更正。

1 个答案:

答案 0 :(得分:4)

您的帮助程序已在Application中定义。而是在你的类中定义它们:

class App < Sinatra::Base
  helpers do
    include Haml::Helpers
    alias_method :h, :html_escape
  end

  # ...

end

或像这样的基地:

Sinatra::Base.helpers do
  include Haml::Helpers
  alias_method :h, :html_escape                                                                                                                    
end