2012-03-20 12 views

答えて

3

私は問題なくHAMLでひげそりテンプレートを生成しています。

私のHAMLはちょっと次のようになります。

.template.shop 
    .foreground 
    .header 
     .header-logo 
    .shop-description 
     .table-frame 
     %a.close-button{:href=>"#"} Close 
     %table 
      %tr 
      %td.shop-images 
      %td.shop-details 
       %p.popup-headline.fix-width 
       {{addr_name}} 
       %p 
       {{addr_street}} {{addr_number}} 
       %br/ 
       {{addr_zip}} {{addr_city}} 
      /{{#hasSchedule}} 
       %p.popup-headline 
       \Öffnungszeiten 
       %table.shop-schedule 
       /{{#sched_mo}} 
       %tr 
        %td Mo: 
        %td {{sched_mo}} 
       /{{/sched_mo}} 

       ... Rest of Table omitted 

これは魔法のように動作します。クライアント上でjQueryを使用してページから抽出した、サーバー上でHTMLとしてレンダリングされます。私はテンプレートのHTMLを取り、口ひげを使ってレンダリングします。

このため、時々、口ひげタグが発生するには、に注意する必要があります。ブラウザの場合、それらは単なるテキストなので、たとえばテーブル行間では無効です。この場合、私の例のようにHTMLコメントに入れてください。

また、生成されたHTML/Mustacheをサーバー上でエスケープすることもできます。私はに、簡単なスタイリングのためにHTMLの生成されたテンプレート部分を持たせたいと思っていたので、私の場合は実行できませんでした。

+0

ブラウザが認識できないタイプのスクリプトタグ、たとえばtype = "text/x-handlebars-template"に生成されたコードを置くと、ブラウザは "無効な" HTMLを混乱させません(たとえばテーブル行の間にあるタグ)、HTMLコメントに入れることを心配する必要はありません – tothemario

+0

はい、これも機能します。また、(サーバー上で)文字列にレンダリングし、その文字列をどこかのJavascriptに入れることもできます。私の場合は、開発を容易にするために、これをDOMの一部にすることが明示的に求められていました。 – Jan

+0

実際には、HAMLは無効なHTMLを生成しないことが賢明だから、うまくいくとは思わない。たとえば、それらをTRの周りに置くと、テキスト文字列が引き出され、テーブルの前に置かれます。私はこの記事を見つけ出すまでコメントハックについて知らなかった。それは完璧に機能するので、ありがとう。Jan。 – gtd

関連する問題