我想要做的是在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文件中使用我的别名方法?
感谢您对此问题的任何建议或更正。
答案 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