- 浏览: 218311 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (110)
- java (111)
- c# winform tablelayoutpanel学习 合并行的布局及动态增加删除内部控件 (1)
- javascript常用正则 (1)
- 认识Java程序 (1)
- UniqTask for android (1)
- JAX-RS 从傻逼到牛叉 2:开发一个简单的服务 (1)
- Spring MVC 数据绑定的扩展 (1)
- 手机分辨率 (1)
- tomcat的favicon.ico的用法 (1)
- Cookie读写demo (1)
- hive相关操作文档收集 (1)
- 测试开发工程师的发展 (1)
- JSF入门十(自定义转换器) (1)
- 《你能行:微软精英的职场心里话》 (1)
- JNI程序如何检测C代码的内存泄漏 (1)
- 做了几天的调研工作 (1)
- 使用Microsoft Web Application Stress进行压力测试 (1)
- 在线共享音乐吧(Online Share Music Bar)解决方案 (1)
- 如何二次压缩RM和RMVB格式文件 (1)
- 突然想起了红色联盟 就去看了看 (1)
- 推荐两个关于DB2认证的站点 (1)
- 安装Microsoft .NET Framework SDK 快速入门、教程和示例 (1)
- 去掉C/C++程序代码中的注释 (1)
- 数据结构之kmp模式匹配 (1)
- JS跨域 (1)
- SP2-0734: 未知的命令开头 "exp test/t..." - 忽略了剩余的行 解决办法 (1)
- Android开发之fedora13下编译Android源码 (1)
- Android开发之Linkify (1)
- json学习之三:JSONArray的应用 (1)
- js 数组操作代码集锦 (1)
- jquery跨域调用json数据 (1)
- qtdemo浅析 (1)
最新评论
-
songshuang:
最近怎么都盗我的文
做个小调查,程序员们都是什么星座的?
<div id="blog_text" class="cnt">一般来说layout有如下五种:<br>gobal layout,controller layout,shared layout,dynamic layout,action layout
假设我们有一个views/projects/index.rhtml页面:<br>代码
1. <h2>projects</h2> <br> 2. <ul> <br> 3. <% for project in @projects %> <br> 4. <li><%= project.name %></li> <br> 5. <% end %> <br> 6. </ul>
<br>下面来看看各种layout的用法。
1,global layout<br>添加views/layouts/application.rhtml:<br>代码
1. <h1>application layout!</h1> <br> 2. <%= yield %>
<br>在layouts目录下添加application.rhtml即可,<%= yield %>即输出我们的projects/index.rhtml页面<br>由于我们的controller都继承自applicationcontroller,所以application.rhtml会先解析
2,controller layout<br>添加views/layouts/projects.rhtml:<br>代码
1. <h1>projects layout!</h1> <br> 2. <%= yield %>
<br>道理同上,projectscontroller当然会使用同名的projects.rhtml作layout了<br>注意的是controller layout会覆盖global layout
3,shared layout<br>添加views/layouts/admin.rhtml:<br>代码
1. <h1>admin layout!</h1> <br> 2. <%= yield %>
<br>我们建立了admin layout,然后在需要使用该layout的controller中指定即可:<br>代码
1. class projectscontroller < applicationcontroller <br> 2. layout "admin" <br> 3. <br> 4. def index <br> 5. @projects = project.find(:all) <br> 6. end <br> 7. end
4,dynamic layout<br>有时候我们需要根据不同的用户角色来使用不同的layout,比如管理员和一般用户,比如博客换肤(也可以用更高级的theme-generator)<br>代码
1. class projectscontroller < applicationcontroller <br> 2. layout :user_layout <br> 3. <br> 4. def index <br> 5. @projects = project.find(:all) <br> 6. end <br> 7. <br> 8. protected <br> 9. <br>10. def user_layout <br>11. if current_user.admin? <br>12. "admin" <br>13. else <br>14. "application" <br>15. end <br>16. end <br>17. end
5,action layout<br>在action中指定layout即可:<br>代码
1. class projectscontroller < applicationcontroller <br> 2. layout :user_layout <br> 3. <br> 4. def index <br> 5. @projects = project.find(:all) <br> 6. render :layout => 'projects' <br> 7. end <br> 8. <br> 9. protected <br> 10. <br> 11. def user_layout <br> 12. if current_user.admin? <br> 13. "admin" <br> 14. else <br> 15. "application" <br> 16. end <br> 17. end <br> 18. end
上面的index方法指定使用projects layout,当然我们也可以指定不使用layout,如printable页面:<br>代码
1. def index <br> 2. @projects = project.find(:all) <br> 3. render :layout => false <br> 4. end
需要注意的是,这5种layout会按顺序后面的覆盖前面的layout
假设我们有一个views/projects/index.rhtml页面:<br>代码
1. <h2>projects</h2> <br> 2. <ul> <br> 3. <% for project in @projects %> <br> 4. <li><%= project.name %></li> <br> 5. <% end %> <br> 6. </ul>
<br>下面来看看各种layout的用法。
1,global layout<br>添加views/layouts/application.rhtml:<br>代码
1. <h1>application layout!</h1> <br> 2. <%= yield %>
<br>在layouts目录下添加application.rhtml即可,<%= yield %>即输出我们的projects/index.rhtml页面<br>由于我们的controller都继承自applicationcontroller,所以application.rhtml会先解析
2,controller layout<br>添加views/layouts/projects.rhtml:<br>代码
1. <h1>projects layout!</h1> <br> 2. <%= yield %>
<br>道理同上,projectscontroller当然会使用同名的projects.rhtml作layout了<br>注意的是controller layout会覆盖global layout
3,shared layout<br>添加views/layouts/admin.rhtml:<br>代码
1. <h1>admin layout!</h1> <br> 2. <%= yield %>
<br>我们建立了admin layout,然后在需要使用该layout的controller中指定即可:<br>代码
1. class projectscontroller < applicationcontroller <br> 2. layout "admin" <br> 3. <br> 4. def index <br> 5. @projects = project.find(:all) <br> 6. end <br> 7. end
4,dynamic layout<br>有时候我们需要根据不同的用户角色来使用不同的layout,比如管理员和一般用户,比如博客换肤(也可以用更高级的theme-generator)<br>代码
1. class projectscontroller < applicationcontroller <br> 2. layout :user_layout <br> 3. <br> 4. def index <br> 5. @projects = project.find(:all) <br> 6. end <br> 7. <br> 8. protected <br> 9. <br>10. def user_layout <br>11. if current_user.admin? <br>12. "admin" <br>13. else <br>14. "application" <br>15. end <br>16. end <br>17. end
5,action layout<br>在action中指定layout即可:<br>代码
1. class projectscontroller < applicationcontroller <br> 2. layout :user_layout <br> 3. <br> 4. def index <br> 5. @projects = project.find(:all) <br> 6. render :layout => 'projects' <br> 7. end <br> 8. <br> 9. protected <br> 10. <br> 11. def user_layout <br> 12. if current_user.admin? <br> 13. "admin" <br> 14. else <br> 15. "application" <br> 16. end <br> 17. end <br> 18. end
上面的index方法指定使用projects layout,当然我们也可以指定不使用layout,如printable页面:<br>代码
1. def index <br> 2. @projects = project.find(:all) <br> 3. render :layout => false <br> 4. end
需要注意的是,这5种layout会按顺序后面的覆盖前面的layout
发表评论
-
qtdemo浅析
2012-02-07 16:14 1585[size=x-small;]? ? <span ... -
jquery跨域调用json数据
2012-02-03 11:39 1435? <script type="te ... -
js 数组操作代码集锦
2012-02-03 10:59 1144[size=small;]这段时间做的一个项目,用到数 ... -
json学习之三:JSONArray的应用
2012-02-02 15:29 71524从json数组中得到 ... -
Android开发之Linkify
2012-01-31 13:33 2211<h1>Android开发之Linkify ... -
Android开发之fedora13下编译Android源码
2012-01-11 16:04 1153<h1>Android开发之fedora1 ... -
SP2-0734: 未知的命令开头 "exp test/t..." - 忽略了剩余的行 解决办法
2011-12-28 14:13 3870<span style="font-f ... -
JS跨域
2011-12-21 16:43 2638原帖地址:http://itgeeker.com/ma ... -
数据结构之kmp模式匹配
2011-12-21 10:04 1185KMP字符串模式匹配详解 KMP字符串模式匹配通俗点说 ... -
去掉C/C++程序代码中的注释
2011-12-20 16:49 3060程序员面试宝典上面的题目有很多是很经典的问题,可供我 ... -
安装Microsoft .NET Framework SDK 快速入门、教程和示例
2011-12-19 10:09 2054Microsoft .NET Framework SD ... -
推荐两个关于DB2认证的站点
2011-12-19 09:59 848关于DB2认证的在线中文教程<br>htt ... -
突然想起了红色联盟 就去看了看
2011-12-17 10:54 1181突然想起了红色联盟,于是就偷偷的爬上红盟站点,看了看红 ... -
如何二次压缩RM和RMVB格式文件
2011-12-16 17:12 1121对RM/RMVB格式文件进行二次压缩,可以用一个软件E ... -
在线共享音乐吧(Online Share Music Bar)解决方案
2011-12-14 19:54 998</span></font>& ... -
使用Microsoft Web Application Stress进行压力测试
2011-12-14 18:33 879<font size="2" ... -
做了几天的调研工作
2011-12-14 17:29 1017</span></span> ... -
JNI程序如何检测C代码的内存泄漏
2011-12-13 14:59 1449Java调用C的JNI程序很容易出现内存泄漏问题,因为 ... -
《你能行:微软精英的职场心里话》
2011-12-12 14:39 961<p class="MsoNorm ... -
JSF入门十(自定义转换器)
2011-12-09 11:00 975本文参考 http://www.javaworld.c ...
相关推荐
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 或者基础设置设计视图。...