gpt4 book ai didi

ruby-on-rails - Partial, Layout, Template 渲染问题

转载 作者:行者123 更新时间:2023-12-01 09:24:38 26 4
gpt4 key购买 nike

现状

因此,当我访问一个页面时,我希望能够将布局应用到一个部分(我有三个我想要的具有相同布局的部分)。现在,我正在尝试使用此命令来执行此操作:

<%= 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。没有内容通过。所以从本质上讲, yield 并没有吸引内容或其他东西。

有人可以帮忙吗?谢谢!

我尝试过的事情

如果我尝试 Ruby 指南中提到的嵌套布局(添加...

<%= render :template => "layouts/services/tab_pane", :locals  => { :service => "essay" } %>

到我的部分并进行所有专有名称更改),我的第二部分包含第一部分的内容,第三部分包含第一部分和第二部分的内容。因此,我的第二部分每个部分将包含 2 个 blah,而我的第三部分每个部分将包含 3 个 blah。谢谢!

更新:

问题现在已解决(感谢 Michael),但现在我想我想知道在处理此类问题时最佳做法是什么。我是否应该在将来避免这样的事情,只担心为整个页面提供模板/布局而不是页面内的部分内容?谢谢!

最佳答案

我想知道您是否对局部 View 的 ViewFlow 处理感到厌烦。你多次调用这个部分吗?问题是 rails 将 content_for 数据存储在哈希中并且它是非破坏性的。

您可以尝试添加:

def yield_content!(content_key)
view_flow.content.delete(content_key)
结束

在您的 ApplicationHelper 中调用 yield_content 而不是布局文件中的 yield。

关于ruby-on-rails - Partial, Layout, Template 渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13106580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com