因此,当我访问页面时,我希望能够将布局应用于部分(我有三个部分,我想要相同的布局)。现在,我正在尝试使用此命令:
<%= render :partial => "shared/services/essay", :layout => "layouts/services/tab_pane", :locals => { :service => "essay" } %>
其中shared/services/essay
类似于:
<% content_for :intro do %>
<p>
blah.
</p>
<% end %>
<% content_for :workflow do %>
<div>
blah.
</div>
<% end %>
<% content_for :value_prop do %>
<p>
blah.
</p>
<% end %>
和`layouts / services / tab_pane'如下:
<div class="tab-pane fade in" id=<%= service %> >
<%= yield :intro %>
<div class="span7 workflow">
<h3>Workflow</h3>
<%= yield :workflow %>
</div>
<div class="span5 value-proposition">
<h3>Our Value Proposition for You</h3>
<%= yield :value_prop %>
<div class="call-to-action">
<%= link_to "Action!", contact_path, class: "btn btn-large btn-warning" %>
</div>
</div>
</div>
当我加载它时,我只是得到布局HTML。没有任何内容通过。从本质上讲,收益率并不是内容或其他内容。
有人可以帮忙吗?谢谢!
如果我尝试Ruby指南中提到的嵌套布局(添加...
)<%= render :template => "layouts/services/tab_pane", :locals => { :service => "essay" } %>
到我的部分并进行所有正确的名称更改),我的第二部分包含来自第一部分和第三部分的内容。因此,我的第二部分将包含每个部分的2个blah,而我的第三个部分将包含每个部分的3个blah。谢谢!
问题现在已经解决了(感谢迈克尔),但现在我想我想知道在处理这样的事情时最佳做法是什么。我是否应该在将来避免这样的事情而只担心给整个页面提供模板/布局而不是页面中的部分?谢谢!
答案 0 :(得分:3)
我想知道你是否受到部分视频处理的影响。你是几次打电话给这个部分?问题是rails将content_for数据存储在哈希中并且非破坏性。
您可以尝试添加:
def yield_content!(content_key)
view_flow.content.delete(content_key)
end
并在布局文件中调用yield_content而不是yield。