2014-07-08 79 views
0

在樹枝我可以具有定義了一些標準定義父模板和像它在樹枝完成它在上軌道4紅寶石延伸「擴展」

<!DOCTYPE html> 
<html> 
    <head> 
     {% block head %} 
      <link rel="stylesheet" href="style.css" /> 
      <title>{% block title %}{% endblock %} - My Webpage</title> 
     {% endblock %} 
    </head> 
    <body> 
     <div id="content">{% block content %}{% endblock %}</div> 
     <div id="footer"> 
      {% block footer %} 
       &copy; Copyright 2011 by <a href="http://domain.invalid/">you</a>. 
      {% endblock %} 
     </div> 
    </body> 
</html> 

父佈局,然後有一個子佈局的其中覆蓋部分或全部塊

{% extends "base.html" %} 

{% block title %}Index{% endblock %} 
{% block head %} 
    {{ parent() }} 
    <style type="text/css"> 
     .important { color: #336699; } 
    </style> 
{% endblock %} 
{% block content %} 
    <h1>Index</h1> 
    <p class="important"> 
     Welcome on my awesome homepage. 
    </p> 
{% endblock %} 

我怎麼可以做類似的事情在Rails的4?我四處張望了一下,但沒有找到它。

回答

3

您可以爲每個控制器創建佈局。 news.html.erbNewsController

然後,您可以使用content_for?yieldrender窩控制器的具體佈局內application.erb.html

下面是來自官方的導軌導向的例子。

app/views/layouts/application.html.erb

<html> 
<head> 
    <title><%= @page_title or "Page Title" %></title> 
    <%= stylesheet_link_tag "layout" %> 
    <style><%= yield :stylesheets %></style> 
</head> 
<body> 
    <div id="top_menu">Top menu items here</div> 
    <div id="menu">Menu items here</div> 
    <div id="content"><%= content_for?(:content) ? yield(:content) : yield %></div> 
</body> 
</html> 

app/views/layouts/news.html.erb

<% content_for :stylesheets do %> 
    #top_menu {display: none} 
    #right_menu {float: right; background-color: yellow; color: black} 
<% end %> 
<% content_for :content do %> 
    <div id="right_menu">Right menu items here</div> 
    <%= content_for?(:news_content) ? yield(:news_content) : yield %> 
<% end %> 
<%= render template: "layouts/application" %> 

來源:http://guides.rubyonrails.org/layouts_and_rendering.html#using-nested-layouts

+0

這是可怕的,但我看不出有什麼其他辦法 –

+0

確定這是一個更好一點,但無論如何感謝HTTP ://blog.55minutes.com/2014/02/easier-nested-layouts-in-rails-34/ –