一般来说layout有如下五种:
gobal layout,controller layout,shared layout,dynamic layout,action layout
假设我们有一个views/projects/index.rhtml页面:
代码
1. <h2>Projects</h2>
2. <ul>
3. <% for project in @projects %>
4. <li><%= project.name %></li>
5. <% end %>
6. </ul>
下面来看看各种layout的用法。
1,global layout
添加views/layouts/application.rhtml:
代码
1. <h1>Application Layout!</h1>
2. <%= yield %>
在layouts目录下添加application.rhtml即可,<%= yield %>即输出我们的projects/index.rhtml页面
由于我们的controller都继承自ApplicationController,所以application.rhtml会先解析
2,controller layout
添加views/layouts/projects.rhtml:
代码
1. <h1>Projects Layout!</h1>
2. <%= yield %>
道理同上,ProjectsController当然会使用同名的projects.rhtml作layout了
注意的是controller layout会覆盖global layout
3,shared layout
添加views/layouts/admin.rhtml:
代码
1. <h1>Admin Layout!</h1>
2. <%= yield %>
我们建立了admin layout,然后在需要使用该layout的controller中指定即可:
代码
1. class ProjectsController < ApplicationController
2. layout "admin"
3.
4. def index
5. @projects = Project.find(:all)
6. end
7. end
4,dynamic layout
有时候我们需要根据不同的用户角色来使用不同的layout,比如管理员和一般用户,比如博客换肤(也可以用更高级的theme-generator)
代码
1. class ProjectsController < ApplicationController
2. layout :user_layout
3.
4. def index
5. @projects = Project.find(:all)
6. end
7.
8. protected
9.
10. def user_layout
11. if current_user.admin?
12. "admin"
13. else
14. "application"
15. end
16. end
17. end
5,action layout
在action中指定layout即可:
代码
1. class ProjectsController < ApplicationController
2. layout :user_layout
3.
4. def index
5. @projects = Project.find(:all)
6. render :layout => 'projects'
7. end
8.
9. protected
10.
11. def user_layout
12. if current_user.admin?
13. "admin"
14. else
15. "application"
16. end
17. end
18. end
上面的index方法指定使用projects layout,当然我们也可以指定不使用layout,如printable页面:
代码
1. def index
2. @projects = Project.find(:all)
3. render :layout => false
4. end
需要注意的是,这5种layout会按顺序后面的覆盖前面的layout
分享到:
相关推荐
Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...
Ruby on Rails:路由系统详解.docx
Ruby on Rails:Rails框架入门.docx
Ruby on Rails:Rails与JavaScript集成.docx
Ruby on Rails:Rails中的表单处理.docx
### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...
Ruby on Rails:部署Rails应用至Heroku.docx
### Flexible Rails: Flex3 on Rails2 #### 关于Flexible Rails 本书《Flexible Rails: Flex 3 on Rails 2》由Peter Armstrong撰写,旨在探讨如何结合使用Flex 3和Rails 2来开发高效的富互联网应用程序(Rich ...
Ruby on Rails:Rails中的测试驱动开发.docx
Ruby on Rails:Rails中的控制器编写.docx
Ruby on Rails:Rails性能优化与缓存策略.docx
Ruby on Rails:RESTful设计原则.docx
Ruby on Rails:MVC架构理解.docx
《敏捷Web开发与Rails:程序指南 第四版》是一本深度探讨使用Ruby on Rails框架进行敏捷Web应用开发的专业书籍。本书旨在帮助开发者充分利用Rails 4的特性,提高开发效率,实现快速迭代和高质量的代码编写。 Rails是...
Ruby on Rails:ActiveRecord模型操作教程.docx
Ruby on Rails:数据库设计与迁移教程.docx
Ruby on Rails:视图层HTML与ERB教程.docx
《Ruby on Rails: Up and Running》是一本针对初学者和有经验开发者的技术书籍,它深入浅出地介绍了如何使用Ruby on Rails框架构建Web应用程序。Ruby on Rails(简称Rails)是基于Ruby编程语言的一个开源Web应用框架...
在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...
rails_layout, 为各种前端框架生成 Rails 应用程序布局文件 RailsLayout gem使用这里 gem 可以设置你选择的前端框架的布局文件:Zurb基础 5.3Bootstrap 4.0Bootstrap 3.3它还将为 Bootstrap 或者基础设置设计视图。...