ruby 如何在html中忽略yield?

62o28rlo  于 2023-03-22  发布在  Ruby
关注(0)|答案(2)|浏览(91)

我创建了一个html页面,但我不想显示页眉和页脚。我该怎么做?

<body>

    <div id="wrapper">  
        <%= render "layouts/header" %>
        <div id="inside"><%= yield %></div>
        <%= render "layouts/footer" %>
    </div>

</body>
44u64gxh

44u64gxh1#

将“render:layout =〉false”添加到你的控制器中,像这样:

class HomeController < AppliationController
  def index
    render :layout => false
  end
end

有关布局/渲染的详细信息,请参阅本指南:http://guides.rubyonrails.org/layouts_and_rendering.html

hts6caw3

hts6caw32#

溶液:使用content_for辅助对象

恕我直言,公认的答案忽略了您的布局。
例如,假设您希望页眉/页脚显示在某些页面上,而不显示在其他页面上,您如何使用content_for helper来管理这一点?

# layouts/application.html.erb
<% if content_for?(:header) %>     
  <%= yield(:header) %>
<% else %>
  <%= render 'layouts/header' %>
<% end %>

好处

  • 对于想要忽略页眉/页脚的页面,只需在content_for块中不呈现任何内容即可。
  • 对于需要默认实现的页面,则完全跳过content_for,或者通过反转if语句来执行相反的操作。
  • 你可以保留你的布局。

相关问题