3

我正在使用中间人进行一些快速原型设计,但我一生都无法弄清楚如何将一个 HAML 文件包含到另一个 HAML 文件中。

我可以在布局文件中包含内容,但无法让一个非布局文件包含另一个非布局文件。我想在某些页面上重用一些 HTML 块,我想我可以做到这一点。我试过了:

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

这些都不起作用。

我是否缺少配置选项或插件?这是一个全新的中间人安装。


回答

部分可能需要以下划线开头的文件名。我的部分放置在一个名为 shared 的文件夹中。文件的全名是_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"

您也可以使用下面批准的答案中指定的格式。

4

1 回答 1

8

我一直在将 HAML 与 MiddleMan 一起使用,并且非常高兴。这对我有用:

我有一个文件: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') 并把字符串放在那里。(我不想在复制粘贴示例时引入错误,所以我将它们留在了那里。)

希望这可以帮助!

于 2012-02-23T06:45:13.667 回答