一般来说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 Guides v2 - Ruby on Rails 4.2.5
Ruby on Rails: Up and Running
Flex在Rich Internet Applications应用的开发上具有非常强的生产效率,而Rails在创建一个基于...Peter Armstrong专门针对这个问题写了《Flexible Rails: Flex 3 on Rails 2》,对如何配合使用作了一个比较全面地介绍。
GraphiQL-Rails 在 Ruby on Rails 中挂载 。 安装 添加到您的 Gemfile: gem "graphiql-rails" 用法 安装引擎 将引擎添加到routes.rb : # config/routes.rb Rails . application . routes . draw do # ... ...
rails_layout, 为各种前端框架生成 Rails 应用程序布局文件 RailsLayout gem使用这里 gem 可以设置你选择的前端框架的布局文件:Zurb基础 5.3Bootstrap 4.0Bootstrap 3.3它还将为 Bootstrap 或者基础设置设计视图。...
使用Rails构建可伸缩和可维护API的最佳方法
SwaggerYard :: Rails SwaggerYard :: Rails gem是一个Rails引擎,旨在使用SwaggerYard解析您的Yardocs API控制器。 它将创建一个Swagger-UI投诉JSON,以通过安装SwaggerYard :: Rails :: Engine的位置提供。安装将...
这个简单的插件使您能够调用to_xls到Rails的数组集合。 数组元素支持对象:ActiveRecord,Mongid,哈希。 在您的Gemfile中: gem 'to_xls-rails' # Last officially released gem # gem "to_xls-rails", :git => ...
提供用于Rails 4.x(及更高版本)资产管道的Sprockets实现。 安装 gem 'sprockets-rails' , :require => 'sprockets/railtie' 或者,如果禁用了Bundler自动请求功能,则在config/application.rb require 'sprockets...
正式版 已经上传, 请到下面链接下载 http://download.csdn.net/source/3432550
“开发人员的笔记本”记录了一些准则,技术和想法,这些准则,技术和想法将经典的面向对象的思想应用于Ruby on Rails应用程序。
本书教您如何使用Ruby on Rails开发和部署真正的,具有工业实力的Web应用程序,Ruby on Rails是为诸如Twitter,Hulu,GitHub和Yellow Pages等顶级网站提供支持的开源Web框架。
RAILS: Radial Assembly Improvement by Long Sequence Scaffolding Cobbler: Gap-filling with long sequences 描述 RAILS 和 Cobbler 是基因组学应用程序,用于支架和自动完成具有长 DNA 序列的基因组组装。 它们...
Component-Based Rails Applications: Large Domains Under Control (Addison-Wesley Professional Ruby Series) By 作者: Stephan Hagemann ISBN-10 书号: 0134774582 ISBN-13 书号: 9780134774589 Edition 版本: ...
每个单独的 Rails 应用程序都由rails::app封装。 例子 rails::app { 'myapp' : ruby_version => ' ruby-2.0.0-p0 ' , db => ' mysql ' , server_name => [ " myapp.com " , " www.myapp.com " ,
rails:Ruby on Rails
flyway-rails 用于 Rails 数据库迁移的薄包装器 ...Flyway::Rails::MIGRATION_DIRECTORY = 'path/to/your/migrations' 然后,您可以通过运行以下命令列出新的 rake 任务: $ rake -T | grep flyway
bin/rails g unveil:rails:install 在app/assets/javascripts/application.js包含launch.js初始化app/assets/javascripts/application.js : //= require unveil_init 现在,在任何需要懒散图像的地方使用helper...