如何在Rails中使用2个布局?

时间:2013-05-30 04:35:17

标签: ruby-on-rails ruby-on-rails-3 layout

我网站上的所有页面都使用应用程序布局。我希望我的静态页面也使用静态页面布局。如何同时使用两种布局?

应用程序布局:

<html>
<head></head>
<body>
<%= yield %>

</body>
</html>

静态页面布局:

<div class="static">
</div>

静态页面:

<p>Hello</p>

我想让页面产生:

 <html>
   <head></head>
   <body>

    <div class="static">
    <p>Hello</p>
    </div>

   </body>
 </html>

3 个答案:

答案 0 :(得分:2)

来自http://guides.rubyonrails.org/layouts_and_rendering.html#using-nested-layouts

在第二个布局中,静态页面布局:

静态布局

<%= render :template => 'layouts/application' %>

应用程序布局

<%= yield %>

要使用静态布局的控制器

class AController
  layout 'static_layout'

static_layout应位于视图/布局中。

我想你也可以使用布局约定:

class StaticController

文件app/views/layouts/static.html.erb

或者在render来电中选择布局:

render 'something', layout: 'static'

答案 1 :(得分:1)

您需要了解yield

的使用情况

application.html.erb

<html>
  <head></head>
  <body>
    <% if @static %>
      <div class="static">
        <%= yield :static %>
      </div>
    <% end %>
    <%= yield %>
  </body>
</html>

static_page.html.erb

<% content_for :static do %>
  <p>Hello</p>
<% end %>

在静态页面控制器操作中,您只需要保持精简即可将@static设置为真

答案 2 :(得分:0)

您好在控制器中使用layout

class StaticPagesController < .....

 # you can apply only,execpt if you want 
 layout 'static'

  def home

  end
end