如何在Rails中创建不同的布局

sub*_*hra 1 ruby ruby-on-rails ruby-on-rails-3

谁可以帮助我对Ruby on Rails的怀疑.假设我有3页(即主页,关于,联系我们)我想创建.每个页面应该有不同的模板.我们知道在ROR中我们有一个" application.html.erb"在布局目录中.

我有以下代码 application.html.erb

<!DOCTYPE html>
<html>
  <head>
    <title>Demo Oditek</title>
    <%= stylesheet_link_tag 'application', media: 'all',
                                           'data-turbolinks-track' => true %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
    <%= csrf_meta_tags %>
    <!--[if lt IE 9]>
      <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/r29/html5.min.js">
      </script>
    <![endif]-->
  </head>
  <body>
    <header class="navbar navbar-fixed-top navbar-inverse">
      <div class="container">
        <%= link_to "sample app", '#', id: "logo" %>
        <nav>
          <ul class="nav navbar-nav pull-right">
            <li><%= link_to "Home",   '#' %></li>
            <li><%= link_to "Help",   '#' %></li>
            <li><%= link_to "Log in", '#' %></li>
          </ul>
        </nav>
      </div>
    </header>
    <div class="container">
      <%= yield %>
    </div>
  </body>
</html>`
Run Code Online (Sandbox Code Playgroud)

标签<%= yield %>呈现内部的所有页面<div class="container"></div> 但是我需要不同的不同模板,并联系我们页面.如何创建这些.请提供一些想法或参考链接.

Ner*_*min 7

您可以向文件夹视图/布局添加更多布局.现在您只有views/layouts/application.html.erb.

你可以添加views/layouts/home.html.erbviews/layouts/dashboard.html.erb.

要选择要使用的布局,可以在控制器中为所有操作定义它,或者只是覆盖特定视图的布局.

class SomeController < ApplicationController

  # all other actions will have application layout
  layout 'dashboard', :only => [:action_1, :action_2]

end
Run Code Online (Sandbox Code Playgroud)

  • 有一点需要注意 - 当你开始使用备用布局时,你可能想要使每个布局与application.html.erb中的相同(例如`head`的内容).将这些共享部分放在每个模板可以引用的部分中,这样模板文件大多只有该模板独有的html:基本上,不要重复自己. (2认同)