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

またはこのようなベースで:

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