mrb*_*000 3 ruby layout haml middleman
我正在使用中间人做一些快速原型设计,并且在我的生活中无法弄清楚如何将一个HAML文件包含到另一个HAML文件中.
我可以在布局文件中包含东西,但是不能让一个非布局文件包含另一个非布局文件.我希望在某些页面上重用HTML块,我想我可以这样做.我试过了:
- render: partial=>"shared/nav.haml"
=shared/nav.html
="shared/nav.html
Run Code Online (Sandbox Code Playgroud)
这些都不起作用.
我错过了配置选项或插件吗?这是一个新鲜的中间人安装.
部分可能需要以下划线开头的文件名.我的部分位于名为shared的文件夹中.该文件的全名是_nav.html.haml
这对我有用.
!= haml :"shared/_nav"
Run Code Online (Sandbox Code Playgroud)
上下文示例:
#email.main.subscriber.resize
#bg-wrap
%div
%img{:src=>"images/backgrounds/image.png",:alt=>""}
%section#zone10
!= haml :"shared/_nav"
Run Code Online (Sandbox Code Playgroud)
您也可以使用下面批准的答案中指定的格式.
我一直在和MiddleMan一起使用HAML,并且感到非常高兴.这是为我工作的:
我有一个文件: 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')})
Run Code Online (Sandbox Code Playgroud)
这使用显示的partial语句包含一个名为的文件source/_paypal_donate_button.html.haml.
我将_donate_buttons.html.haml文件本身包含在以下几个地方:
= partial "donate_buttons"
Run Code Online (Sandbox Code Playgroud)
虽然我认为这也可能是:
= partial :donate_buttons
Run Code Online (Sandbox Code Playgroud)
即我认为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}
Run Code Online (Sandbox Code Playgroud)
Fwiw,我认为文件不需要_filename.html.haml而且可以代替_filename.haml.另外,我正在本地化这些,所以忽略t('标记名')并将字符串放在那里.(我不想引入错误复制粘贴示例,所以我将它们留在那里.)
希望这可以帮助!