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

时间:2014-12-09 09:20:07

标签: ruby-on-rails ruby 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>`

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

2 个答案:

答案 0 :(得分:6)

您可以为文件夹视图/布局添加更多布局。现在您只有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

答案 1 :(得分:2)

在您的控制器中:

def about
  @my_model = MyModel.where('whatever')
  render layout: 'about'
end

然后在布局中创建一个名为about.html.erb

的文件