En utilisant un intermédiaire, comment inclure un fichier HAML dans un autre fichier HAML?
Question
J'utilise des intermédiaires pour faire du prototypage rapide et je ne peux pas pour la vie de moi comprendre comment inclure un fichier HAML dans un autre fichier HAML.
Je peux inclure des éléments dans un fichier de mise en page, mais je ne peux pas obtenir un fichier non-layout pour inclure un autre fichier non-layout.Il y a des blocs de HTML que je souhaite réutiliser sur certaines pages et je pense que je pourrais le faire.J'ai essayé:
- render: partial=>"shared/nav.haml"
=shared/nav.html
="shared/nav.html
et rien de tout cela ne fonctionne.
Est-ce qu'il me manque une option de configuration ou un plugin?Il s'agit d'une nouvelle installation intermédiaire.
< ANSWER
Les partiels peuvent avoir besoin de noms de fichiers commençant par un trait de soulignement.Mon partiel est placé dans un dossier appelé partagé.Le nom complet du fichier est _nav.html.haml
Cela a fonctionné pour moi.
!= haml :"shared/_nav"
Exemple en contexte:
#email.main.subscriber.resize
#bg-wrap
%div
%img{:src=>"images/backgrounds/image.png",:alt=>""}
%section#zone10
!= haml :"shared/_nav"
Vous pouvez également utiliser le format spécifié dans la réponse approuvée ci-dessous.
La solution
J'utilise HAML avec MiddleMan et je ne pourrais pas être plus heureux.Voici ce qui fonctionne pour moi:
J'ai un fichier: 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')})
Ceci utilise l'instruction partielle indiquée pour inclure un fichier appelé source/_paypal_donate_button.html.haml
.
Et j'inclus le fichier _donate_buttons.html.haml
lui-même à quelques endroits avec:
= partial "donate_buttons"
mais je pense que cela pourrait aussi être:
= partial :donate_buttons
C'est-à-direJe pense que partial
est la magie que vous recherchez.
Et, juste pour être complet, voici un _paypal_donate_button.haml
légèrement dépouillé qui montre comment la paramétrisation fonctionne là-bas:
-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, je ne pense pas que le fichier doive être _filename.html.haml
et peut à la place être _filename.haml
.De plus, je les localise, donc ignorez le t ('tagname') et mettez simplement des chaînes là-bas. (Je ne voulais pas introduire une erreur de copier-coller des exemples, je les ai donc laissés là-dedans.)
J'espère que cela vous aidera!