【问题标题】:Partial, Layout, Template rendering problems部分、布局、模板渲染问题
【发布时间】:2012-10-17 21:06:06
【问题描述】:

情况

所以当我访问一个页面时,我希望能够将布局应用于部分(我想要三个具有相同布局的部分)。现在,我正在尝试使用以下命令:

<%= 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 Guides 中提到的嵌套布局(添加...

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

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

更新:

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

【问题讨论】:

    标签: ruby-on-rails templates layout yield partials


    【解决方案1】:

    我想知道您是否对 ViewFlow 处理部分内容感到不满。您是否多次调用此部分?问题是 rails 将 content_for 数据存储在哈希中,并且是非破坏性的。

    您可以尝试添加:

    def yield_content!(content_key) view_flow.content.delete(content_key) end

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

    【讨论】:

    • 感谢您的回复!所以...我尝试将您所说的添加到 ApplicationHelper 中,重新加载 localhost 服务器,但是每当我现在尝试加载页面时,我都会得到一个undefined method "yield_content" for #&lt;#&lt;Class:0x007f860f93ca00&gt;:0x007f860f910838&gt;
    • 哦,好的。我解决了这个问题。我不得不打电话给yield_content! 而不仅仅是yield_content,因为我的ApplicationHelper 中有yield_content!。所以它现在可以工作了!但是您知道尝试做我所做的任何更好的做法吗?我觉得覆盖 ViewFlow 的工作方式可能不是最好的方法......谢谢!
    • 这与 rails 的工作方式有关,不确定是否有更好的方法,但您可以避免部分布局;)
    猜你喜欢
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    相关资源
    最近更新 更多