テンプレートに主にerbを使用しているsinatraアプリがありますが、サーバー側とクライアント側の両方でレンダリングする必要があるhtmlのブロックに口ひげの部分を追加しています。追加する口ひげテンプレートを含むすべてのテンプレートを保持する「views」ディレクトリがあります。たとえば、構造は次のようになります。
views/
index.html.erb
_wingding.html.erb
_widget.html.mustache
このエンドポイントを使用してindex.html.erbをレンダリングしているとしましょう。
get '/' do
erb :index
end
そして、そのテンプレート内で、上記の両方のパーシャルをレンダリングしたいと思います[更新:このpartial
メソッドはsinatraに組み込まれていませんが、gemを介して含まれています(詳細については私の回答を参照してください)が、それでもメインのsinatraに依存していますレンダリングコンポーネントなので、ここでの問題はまだ残っています。]。したがって、index.html.erbには次のものが含まれます。
<%= partial :wingding %>
<%= partial :widget %>
erb部分(wingding)は正常にレンダリングされますが、口ひげ部分(ウィジェット)は正常にレンダリングされません。これにより、アプリケーションは例外をスローします。
テンプレートエンジンが見つかりません:口ひげ
プロジェクトに「口ひげ」の宝石を含めました。やってみ'require mustache/sinatra'
ましregister Mustache::Sinatra
た。これらのステートメントは両方とも機能しましたが、上記の問題は解決しませんでした。口ひげを部分的にレンダリングできるように、sinatraに口ひげについて伝える方法はありますか?
この構成を含めることで、ビューディレクトリを設定しています。
configure do
set :views, File.join(File.dirname(__FILE__), 'views')
end
バージョン番号:
- シナトラ1.3.1
- 口ひげ0.99.4
- ルビー1.9.3