Middlemanを使用して、1つのHamlファイルを別のHamlファイルにどのように含めますか?
質問
私は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')を無視して、そこに文字列を置くだけです。 (例をコピーするエラーを導入したくなかったので、そこに残しました。)
お役に立てれば!