Middlemanを使用して、1つのHamlファイルを別のHamlファイルにどのように含めますか?

StackOverflow https://stackoverflow.com/questions/9397177

  •  29-10-2019
  •  | 
  •  

質問

私はMiddlemanを使用していくつかの迅速なプロトタイピングを行いますが、私の人生のために、あるHamlファイルを別のHamlファイルに含める方法を理解できません。

レイアウトファイルにものを含めることはできますが、1つの非レイアウトファイルを取得して別の非レイアウトファイルを含めることはできません。いくつかのページで再利用したいHTMLのブロックがあり、これができると思います。私はもう試した:

- render: partial=>"shared/nav.haml"
=shared/nav.html
="shared/nav.html

そして、これらの作業はどれもありません。

設定オプションまたはプラグインがありませんか?これは新鮮な仲介者インストールです。


答え

部分的 五月 アンダースコアから始まるファイル名が必要です。私の部分は、共有と呼ばれるフォルダーに配置されています。ファイルのフルネームは_nav.html.hamlです

これは私のために働いた。

!= haml :"shared/_nav"

コンテキストの例:

#email.main.subscriber.resize
  #bg-wrap
    %div
      %img{:src=>"images/backgrounds/image.png",:alt=>""}
  %section#zone10
    != haml :"shared/_nav"

また、以下の承認された回答で指定された形式を使用することもできます。

役に立ちましたか?

解決

私はミドルマンと一緒にハムルを使ってきましたが、幸せになることはできませんでした。これが私のために働いているものです:

ファイルがあります: source/_donate_buttons.h

 #DonationButtons
   %p= t('searching.donate_cover_costs')
   %br
   = partial(:paypal_donate_button, :locals => {:amount => 1, 
     :amount_text => t('searching.donate_1')})

これは、呼ばれるファイルを含むように示されている部分的なステートメントを使用します source/_paypal_donate_button.html.haml.

そして、私はそれを含めます _donate_buttons.html.haml 次のようないくつかの場所にそれ自体をファイルします:

= partial "donate_buttons"

私はこれもそうかもしれないと思います:

= partial :donate_buttons

つまり、私は思う partial あなたが探している魔法です。

そして、完全に、ここに少し剥ぎ取られています _paypal_donate_button.haml これは、パラメーター化がそこでどのように機能するかを示しています。

-btnclass = (locals.key?(:highlight) && locals[:highlight] ? "HighlightedDonationButton" : "DonationButton")
-btnstyle = locals.key?(:button_style) && locals[:button_style]
.DonationButtonContainer
  %form{:action => "https://www.paypal.com/cgi-bin/webscr", :method => "post"}
    %input{:name => "business", :type => "hidden", :value => "payments@example.com"}
    %input{:name => "cmd", :type => "hidden", :value => "_donations"}
    %input{:name => "amount", :type => "hidden", :value => "#{amount}.00"}
    %input{:name => "currency_code", :type => "hidden", :value => "USD"}
    %input{:class => btnclass, :alt => t('paypal.alt_text'),
      :style => "cursor: pointer; font-size: 18px; #{btnstyle}", :type => "submit", :value => amount_text}

fwiw、私はファイルがある必要はないと思います _filename.html.haml 代わりにそうすることができます _filename.haml. 。また、私はこれらをローカライズしているので、t( 'tagname')を無視して、そこに文字列を置くだけです。 (例をコピーするエラーを導入したくなかったので、そこに残しました。)

お役に立てれば!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top