除了application.html.erb之外,yield不能在partials中工作

时间:2013-05-20 06:17:26

标签: ruby-on-rails-3 ruby-on-rails-3.2

这里我要求在application.html.erb以外的部分使用yield,当我在partial中尝试这个时它会显示空白值,如果我在application.html.erb中尝试yield,它就会显示价值。

application.html.erb

body>
<div id="main-container">
  <%= content_for?(:page_header) ? yield(:page_header) : (render :partial => "/shared/home_header") %>
  <div id="middle-container">
    <%= yield %>
  </div>
  <div id="bottom-container">
    <%= render "/shared/bottom_partial" %>
  </div>

index.html.erb

<% content_for :page_header do %>
  <%= render :partial => "/shared/employer_header" %>
<% end %>
<% content_for :page_name do %>
  <p>My Account</p>
<% end %>
<div>
    xxxxxxxxxxxxxx
    xxxxxxxxxxxxxx
</div>

/shared/_employer_header.html.erb

 <div class="heading" >
    <%= yield(:page_name) %>
 </div>

当我在上面尝试时,我在yield中获得空白值:如果我在application.html.erb中尝试yield:页面名称,则在employee头中获取page_name我得到了值。任何人都可以帮我解决这个问题.Thank'U”。

1 个答案:

答案 0 :(得分:2)

交换两个content_fors的顺序,以便在呈现部分之前定义:page_name。

index.html.erb

<% content_for :page_name do %>
  <p>My Account</p>
<% end %>
<% content_for :page_header do %>
  <%= render :partial => "/shared/employer_header" %>
<% end %>