En utilisant un intermédiaire, comment inclure un fichier HAML dans un autre fichier HAML?

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

  •  29-10-2019
  •  | 
  •  

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.

Était-ce utile?

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!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top