看看注释可以做一些总结:
- 1 Layout的简要介绍
由于在网页中经常要使用通用的header和footer
- <%= render "shared/header" %>
- Hello World
- <%= render "shared/footer" %>
所以采用layout的方式就能很简单的解决这个问题,只需要在一个页面设置header和footer
layout页面:
- // The header part of this layout
- <%= yield %>
- // The footer part of this layout
具体内容页面:
hello world
如果Layout如下:
- <h1><%= @page_title %></h1>
- <%= yield %>
@page_title = "welcome"
那么页面显示就是
- <h1>welcome</h1>
- hello world
- 2 Layout的继承
- class BankController < ActionController::Base
- layout "bank_standard"
- class InformationController < BankController
- class VaultController < BankController
- layout :access_level_layout
- class EmployeeController < BankController
- layout nil
BankController 是用"bank_standard" layout
InformationController 也是用"bank_standard" layout
VaultController 是从
access_level_layout方法获取layout
EmployeeController 没有Layout
- 3 Layout类型
可以接受的类型:
- 3.1 String 作为layout名字
- 3.2 Symbol 作为方法传递
- class WeblogController < ActionController::Base
- layout :writers_and_readers
- def index
- # fetching posts
- end
- private
- def writers_and_readers
- logged_in? ? "writer_layout" : "reader_layout"
- end
- end
- 3.3 Proc
- class WeblogController < ActionController::Base
- layout proc{ |controller| controller.logged_in? ? "writer_layout" : "reader_layout" }
- 4 Layout的使用条件
- class WeblogController < ActionController::Base
- layout "weblog_standard", :except => :rss
- end
- # Using a different layout in the action render call
- class WeblogController < ActionController::Base
- layout "weblog_standard"
- def help
- render :action => "help", :layout => "help"
- end
- end