0

我想要做的是在 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

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

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

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

NoMethodError - # 的未定义方法“h”:

...

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

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

如何在 haml 文件中使用我的别名方法而不会出错?

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

4

1 回答 1

4

您的助手在应用程序中得到定义。而是像这样在您的类中定义它们:

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

  # ...

end

或者像这样在 Base 中:

Sinatra::Base.helpers do
  include Haml::Helpers
  alias_method :h, :html_escape                                                                                                                    
end
于 2012-06-09T03:49:59.060 回答