7

昨天刚开始使用 Ruby on Rails。在我的 layouts/application.html.erb 我有:

<!DOCTYPE html>
<html>
  <head>
    <title><%= full_title(yield(:title)) %></title>
    <%= stylesheet_link_tag    "application", media: "all" %>
    <%= javascript_include_tag "application" %>
    <%= csrf_meta_tags %>  
  </head>
  <body>
    <%= render 'layouts/header' %>
    <div class="container">
      <%= yield %>
    </div>
    <%= render 'layouts/footer' %>
  </body>
</html> 

来自 php ->codeigniter 背景,我假设渲染类似于 $this->load->view(''); 在代码点火器中。
虽然这很好用,但我希望有多个应用程序布局文件,例如

  1. 布局/应用程序默认值
  2. 布局/应用程序全宽(用于全宽页面)
  3. 等等..

在 codeigniter 中,您只需声明您希望使用的模板/布局文件,但由于 ruby​​ on rails 有点神奇(它为您做了很多事情),我假设它默认调用应用程序布局。我想知道是否有办法选择我想要的布局文件?

4

2 回答 2

15

@Deefour 提供了正确的资源,这是一个很好的快速示例,说明如何在 Rails 4 中实现这一点。

在控制器中,您可以指定要在哪里获取特定操作的布局,并对使用的布局进行非常精细的控制。

class PagesController < ApplicationController
  layout "fullwidth", except: [:index, :faqs]

  def popout
    # Render this action with specific layout
    render layout: "popout"
    #renders with views/layouts/popout.html.erb
  end

  def index
    #renders with views/layouts/application.html.erb
  end

  def about_us
    #renders with views/layouts/fullwidth.html.erb
  end

  def team
    #renders with views/layouts/fullwidth.html.erb
  end

  def logo
    #renders with views/layouts/fullwidth.html.erb
  end

  def faqs
    #renders with views/layouts/application.html.erb
  end
end

application.html.erb是 rails 标准布局文件。我假设它存在,它是默认的后备!

于 2014-03-17T16:17:06.707 回答
8

你正在寻找layout方法。

本 Rails 指南将帮助您,特别是Find Layouts。我将在此处提供更多详细信息,但前面提到的文档和指南提供了足够多的示例和使用说明。

于 2013-03-05T16:03:40.230 回答