Структурирование шаблона макета в Haml

У меня есть веб-страница, на которой для макетов используется Haml. Существует отдельный файл макета (layout.haml), который используется при рендеринге любой реальной страницы haml. Layout.haml выглядит примерно как

-# layout.haml
!!! XML
!!!
%html
  %head
    ...
  %body
    ...
    #content= yield

Проблема: это, конечно, уже есть в документе , поэтому манипулировать вещами в заголовке напрямую невозможно. Например, </code> изменяется через <code> @title </code>. Еще одна проблема заключается в том, что каждая страница, специфичная для Javascript, должна быть загружена в теле. Более того, layout.haml уже содержит Javascript, поэтому jQuery обычно создается несколько раз. </p> <p> Есть ли предложения по улучшению структуры шаблона? </p> </div> <div class="votes-question"> <div class="vote-count" itemprop="upvoteCount">16</div><i class="fa fa-thumbs-o-up"></i> </div> <div class="tags"> <a href="/questions/tagged/ruby" class="tag" title="ruby" rel="tag">ruby</a> <a href="/questions/tagged/haml" class="tag" title="haml" rel="tag">haml</a> </div> <div class="clearfix"></div> <div class="action-time"> задан JakeGould <span title="23 November 2014 в 20:18 ">23 November 2014 в 20:18 </span> </div> <a class="s-link" href="/questions/291088/strukturirovanie-shablona-maketa-v-haml" title="поделиться">поделиться</a> </div> </div> <div style="height:100px;margin:10px 0px;" class=""> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- siteask before post --> <ins class="adsbygoogle" style="display:block;height:100px" data-ad-client="ca-pub-2355906945027976" data-ad-slot="" data-ad-format="auto"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="answers" id="answers"> <h2 class="pull-left"><span itemprop="answerCount">0</span> ответов</h2> <div class="clearfix"></div> <div class="answer-pager"> <div class="pagination"> </div> </div> <div style="margin-top: 20px;"> Другие вопросы по тегам: <div class="tags" style="display: inline-block; float: none;"> <a href="/questions/tagged/ruby" class="tag" title="ruby" rel="tag">ruby</a> <a href="/questions/tagged/haml" class="tag" title="haml" rel="tag">haml</a> </div> <h3 class="m-t-20">Похожие вопросы:</h3> <div class="related-block"> <ul> <li><div class='votes-answer green'><span class='vote-count'>41</span> <i class="fa fa-thumbs-o-up"></i></div> <a href="/questions/131585/izuchenie-ruby-on-rails" title="Изучение Ruby on Rails">Изучение Ruby on Rails</a> - 9 June 2011 23:21 </li> <li><div class='votes-answer green'><span class='vote-count'>37</span> <i class="fa fa-thumbs-o-up"></i></div> <a href="/questions/131626/skrytye-funkcii-ruby" title="Скрытые функции Ruby">Скрытые функции Ruby</a> - 23 May 2017 10:31 </li> <li><div class='votes-answer green'><span class='vote-count'>35</span> <i class="fa fa-thumbs-o-up"></i></div> <a href="/questions/131196/pochemu-izuchajut-perl-python-ruby-esli-kompanija-ispolzuet-c-c-ili-java-kak-jazyk-prilozhenija-zakrytyj" title="Почему изучают Perl, Python, Ruby, если компания использует C++, C# или Java как язык приложения? [закрытый]">Почему изучают Perl, Python, Ruby, если компания использует C++, C# или Java как язык приложения? [закрытый]</a> - 20 May 2010 08:15 </li> <li><div class='votes-answer green'><span class='vote-count'>29</span> <i class="fa fa-thumbs-o-up"></i></div> <a href="/questions/192390/to-chto-ruby-imeet-tem-python-ne-delaet-i-naoborot" title="То, что Ruby имеет тем Python, не делает, и наоборот?">То, что Ruby имеет тем Python, не делает, и наоборот?</a> - 24 March 2011 15:23 </li> <li><div class='votes-answer green'><span class='vote-count'>26</span> <i class="fa fa-thumbs-o-up"></i></div> <a href="/questions/135274/python-po-sravneniju-s-ruby-dlja-zakrytogo-metaprogrammirovanija" title="Python по сравнению с Ruby для [закрытого] метапрограммирования">Python по сравнению с Ruby для [закрытого] метапрограммирования</a> - 26 July 2018 13:03 </li> <li><div class='votes-answer green'><span class='vote-count'>26</span> <i class="fa fa-thumbs-o-up"></i></div> <a href="/questions/135221/pochemu-ispolzovanie-ruby-vmesto-smalltalk-zakrytyj" title="Почему использование Ruby вместо Smalltalk? [закрытый]">Почему использование Ruby вместо Smalltalk? [закрытый]</a> - 15 August 2016 15:20 </li> <li><div class='votes-answer green'><span class='vote-count'>24</span> <i class="fa fa-thumbs-o-up"></i></div> <a href="/questions/174757/chto-instrumenty-veb-razrabotchiki-ispolzujut-s-php-ruby-on-rails-python-i-t-d" title="Что инструменты веб-разработчики используют с PHP, Ruby on Rails, Python, и т.д.?">Что инструменты веб-разработчики используют с PHP, Ruby on Rails, Python, и т.д.?</a> - 8 November 2009 20:35 </li> </ul> </div> </div> </div> </div> </div> <aside class="sidebar"> <div class="awrap"> <script async src="https://yastatic.net/pcode-native/loaders/loader.js"></script> <script> (yaads = window.yaads || []).push({ id: "553274-2", render: "#id-553274-2" }); </script> <div id="id-553274-2"></div> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:inline-block;width:300px;height:600px" data-ad-client="ca-pub-2355906945027976" data-ad-slot="8038370725"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </aside> </div> </div> <footer class="footer"> <div class="wrapper wrapper--sm"> <div class="footer-navs-col"> <div class="footer-nav footer-nav--menu"> <div class="footer-coryright">© 2017 - 2020 Вопросы и ответы по программированию</div> </div> <div class="footer-nav footer-nav--catalog"> </div> </div> <div class="footer-contacts-col"> <div class="soc-widget-col"> </div> </div> <div class="clearfix"></div> </div> </footer> </div> <script type="text/javascript" src="/js/ui/jquery-ui-1.8.16.custom.min.js"></script> <script type="text/javascript" src="/js/ui/external/jquery.cookie.js"></script> <script type="text/javascript" src="/js/versions/menu.ru.u1607887878.js"></script> <script type="text/javascript" src="/js/jquery.fancybox.min.js"></script> <script type="text/javascript" src="/js/slick.min.js"></script> <script type="text/javascript" src="/js/jquery.maskedinput.min.js"></script> <script type="text/javascript" src="/js/versions/scripts.ru.u1607887878.js"></script> <!-- Yandex.Metrika counter --> <script type="text/javascript" > (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; var z = null;m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym(90030325, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true }); </script> <noscript><div><img src="https://mc.yandex.ru/watch/90030325" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-123993370-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-123993370-1'); </script> </div> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "WebSite", "name": "Программирование - вопросы и ответы", "alternateName": "Программирование - вопросы и ответы", "url": "https://legkovopros.ru", "potentialAction": { "@type": "SearchAction", "target": "https://legkovopros.ru/search?search={search_term_string}", "query-input": "required name=search_term_string" } } { "@context": "https://schema.org", "@type": "Organization", "name": "Программирование - вопросы и ответы", "url": "https://legkovopros.ru", "logo": "https://legkovopros.ru/i/logo.png", "email": "info@legkovopros.ru", "telephone": "" } </script> </body> </html>