一般说来,layouts有5种:global layouts, controller layouts, shared layouts, dynamic layouts, action layouts.
假设有这样一个视图
<!-- views/projects/index.rhtml -->
<h2>Projects</h2>
<ul>
<% for project in @projects %>
<li><%= project.name %></li>
<% end %>
</ul>
1. global layouts
<!-- views/layouts/application.rhtml -->
<h1>Global Layouts</h1>
<%= yield %>
所有的controller都继承于application,因此application.rhtml会作为global layouts最先解析。
2. controller layouts
<!-- views/layouts/projects.rhtml -->
<h1>Controller Layouts</h1>
<%= yield %>
该layouts只作用于projects_controller
3. shared layouts
首先建立views/layouts/admin.rhtml,然后在controller中声明即可,可在多个controller中共享。
class ProjectsController < ApplicationController
layout "admin"
def index
@projects = Project.find(:all)
end
end
4. dynamic layouts
我们可以根据需要为不同的用户选择不同的layouts,比如区别admin和user。同样可以用于博客主题的替换。
class ProjectsController < ApplicationController
layout :user_layout
def index
@projects = Project.find(:all)
end
protected
def user_layout
if current_user.admin?
"admin"
else
"application"
end
end
end
5. action layouts
在action中指定layouts即可。
class ProjectsController < ApplicationController
def index
@projects = Project.find(:all)
render :layout => 'projects'
end
end
另外我们可以直接指定不使用任何layouts
class ProjectsController < ApplicationController
def index
@projects = Project.find(:all)
render :layout => false
end
end
这5种layouts的优先级为最里面的最高,也就是说action > dynamic > shared > controller > global.
分享到:
相关推荐
Motivation Example Our Solution——Maze Demo 开发生成的障碍之一是内存布局操作。大量内存损坏漏洞(例如堆溢出和UAF)只能在特定的内存布局中使用。在实践中,它需要人工操作内存布局。因此,自动内存布局操作是...
标题中的"OA1500_Layouts_original_.pcb_"暗示了这是一个关于OA1500设备的原始布局设计文件,其中".pcb"是印刷电路板(Printed Circuit Board)的文件扩展名,通常用于表示电子产品的电路板设计。PCB设计是电子工程...
例如,博客“***”和“***”提供了关于MDS的详细介绍和实施指导。 需要注意的是,在某些情况下,可能会遇到MDS未正确应用导致的页面加载问题。例如,当尝试访问特定的页面(如“***”)时,虽然地址正确,但是URL...
### Android Layouts详解 在Android应用开发中,布局(Layout)是组织用户界面的重要组成部分,它决定了应用界面的外观和结构。布局管理器用于控制视图(View)和视图组(ViewGroup)如何被放置在屏幕上。通过合理...
总结来说,"Keyboard_Layouts"集合是关于键盘布局的资源包,可能包括多种布局设计、安装教程、相关工具和文档,旨在满足不同用户对个性化和高效输入的需求。通过探索这个集合,用户有机会找到更适合自己的键盘布局,...
Thymeleaf Examples: Layouts This is an example project containing code used in the "Thymeleaf Layouts" tutorial. The project was created using Spring MVC 4 Quickstart Maven archetype: ...
标题“_layouts:jekyll模板”指的是 Jekyll 中的 `_layouts` 文件夹,这个文件夹存放着网站的整体布局和设计模板。每个布局模板定义了页面的基本结构,例如页头、主要内容区域和页脚。在 Jekyll 中,你可以创建多个...
在Android开发中,窗口布局(layouts)是构建用户界面的核心元素。它们决定了应用程序屏幕上元素的排列方式和相互关系。本篇文章将深入探讨Android布局中的三种主要控件:RelativeLayout、GridLayout和LinearLayout...
这个页面位于`\_layouts`文件夹内,这是一个IIS虚拟目录,实际上映射到服务器上的真实路径,通常是`C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS`。该`\_layouts`...
【标题】:“CursoKotlin_Layouts:添加TextView” 在这个教程中,我们将深入探讨如何在Android应用程序中使用Kotlin语言来添加和操作TextView组件。TextView是Android开发中最基础且常用的UI元素之一,它用于显示...
客户端变量 将您的rails变量导出到客户端 安装 将此行添加到您的应用程序的Gemfile中: gem 'client_variable' 安装并将其添加到Gemfile后,需要运行生成器: ...将此行添加到app/views/layouts/ap
在安卓平台上构建复杂布局是移动应用开发的一个重要组成部分,它直接影响到应用的可用性和用户体验。安卓提供了多种布局方式,开发者可以根据需要选择和组合这些布局,以创建复杂的图形结构。以下是对安卓布局系统...
微信面板程序的界面布局demo,来源于网络,很漂亮
这篇标题为“krogius2019-Flexible Layouts for Fiducial Tags.pdf”的文档主要讨论了在计算机视觉领域中,通过使用柔性布局提高fiducial tags(基准标签)的性能。文档的标题和描述中提到了几个关键概念,包括...
Keymagic_Layouts 缅甸语言的 Keymagic 键盘布局 Keymagic 键盘布局文件 对于开发者 创建您自己的 Keymagic 键盘布局 使用 kEditor 打开。 编辑你想要的并编译它 对于用户 在您的计算机中安装 Keymagic 键盘管理器...
# management_books/app/views/layouts/books.html.erb <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ;charset=UTF-8"/> ...
Box Model Layout vs Sencha Layouts 传统的Box Model布局依赖于HTML和CSS的自然流布局,而Sencha的布局则是一种更为高级的容器管理机制。它允许开发者定义组件的位置、大小以及相互关系,而不受制于底层HTML结构...
Log4j API允许开发者创建自定义的Appenders、Filters和Layouts,以满足特定需求。此外,通过使用Lookup机制,配置文件可以引用运行时环境中的变量,增加配置的灵活性。 总结来说,Log4j API为Java开发者提供了一个...
在Android应用开发中,Tabbed Layouts是一种常见的用户界面设计,它允许用户通过标签页来切换不同的内容区域。本教程将聚焦于如何使用Microsoft的Visual Studio集成开发环境(IDE)和C#语言来构建Android应用中的...
#agdq15-layouts 这是一个包。 您需要安装 NodeCG 才能运行它。 这些都是在 Awesome Games Done Quick 2015 中使用的所有在线图形。安装安装到nodecg/bundles/agdq15-layouts用法此捆绑包不打算逐字使用。 许多资产...