rails部分的布局与命名的yield - 为什么yield块从未使用过?

Pet*_*ich 12 layout ruby-on-rails partials content-for

我有一个部分,有一个布局:

<%= render :partial => 'home/mobile/home', :layout => 'home/mobile/page', :locals => {:page => 'abc2'}%>
Run Code Online (Sandbox Code Playgroud)

布局(page.html.erb)具有不同块的产量,例如:

<div data-role="header">
  <%= yield :header %>
</div>
Run Code Online (Sandbox Code Playgroud)

但是,从不使用此yield块,而主级布局文件确实产生了预期的效果.

使用部分布局的命名content_for/yield块是不是不可能?有变通方法吗?

我希望继承 - content_for:header应首先在partial的布局中查找yield:标头,并且失败,即主布局文件.但这种情况并非如此.部分布局的yield:标头被简单地忽略.

sam*_*ers 7

在与您类似的情况下,我用不带阻塞的yield调用替换了 。content_for所以在你的例子中它很简单:

<div data-role="header">
  <%= content_for :header %>
</div>
Run Code Online (Sandbox Code Playgroud)

这对我有用。这yield在部分中不会像你建议的那样慢慢出现,这可能是一个功能或一个错误 - 但这似乎仍然是它在 3 年后的 Rails 4.1.8 中的工作方式:)


Osc*_*Ben 0

解决方法是使用将布局包装到辅助方法中(应该能够正确生成)。

您可能想要修复有关原始问题的错误。