gpt4 book ai didi

ruby-on-rails-3 - 如何使用content_for以使内容显示在布局中

转载 作者:行者123 更新时间:2023-12-04 06:56:15 25 4
gpt4 key购买 nike

我正在我的rails 3.2应用程序中测试content_for并遵循rails指南,但是它们特定于实际文件,我似乎无法正常工作:

application.html.erb文件:

 <!DOCTYPE html>
<html>
<head>
...
</head>

<body>




<%= yield :navigation %> #shouldn't this load the content_for block named :navigation specified in the _main_nav.html.erb partial?

<%= yield %> #this load the index page content


</body>
</html>

我创建了一个布局文件_main_nav.html.erb(我知道我可以使用<%= render'layouts/header'%>进行渲染,但是我正尝试使用content_for)_main_nav.html.erb是:
<% content_for :navigation do %>
<ul>
<li>Home</li>
</ul>

<% end %>

他们以我阅读RailsGuide的方式 http://guides.rubyonrails.org/layouts_and_rendering.html#using-the-content-for-method
这应该工作。但事实并非如此。我没有得到一个错误。看起来很简单,但我很困惑。

当我转到index.html.erb文件时,我希望看到以下结果:
  • 主页
  • 最佳答案

    好的,我想我对此有解决方案。您的代码:

    <% content_for :navigation do %>
    <ul>
    <li>Home</li>
    </ul>
    <% end %>

    应该位于正在加载的文件的顶部。您的_header.html.erb是局部的。如果将此代码移到views/tasks/new.html.erb中,则它将按预期工作。

    但是,要使其按需运行,则需要调整application.html.erb文件:
    <p>this is where we should see the "Home" link appear that is defined in _header.html.erb:</p>
    <section class="header">
    <% render 'layouts/header' %>
    <%= yield :navigation %>
    </section>

    请注意,我已经调用了不带=符号的render erb标签。这意味着我看不到标题的部分内容,但确实可以加载。如果包含=符号,则它仍然可以工作,但还会呈现部分内容中可能包含的任何其他内容。
    注意:render标签必须在yield标签之上/之前。

    关于ruby-on-rails-3 - 如何使用content_for以使内容显示在布局中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17757176/

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