`
wiisola
  • 浏览: 87569 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

#007_关于layouts

阅读更多
一般说来,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.
分享到:
评论

相关推荐

    Exploring_The_Maze_Of_Memory_Layouts_Towards_Exploits.pdf

    Motivation Example Our Solution——Maze Demo 开发生成的障碍之一是内存布局操作。大量内存损坏漏洞(例如堆溢出和UAF)只能在特定的内存布局中使用。在实践中,它需要人工操作内存布局。因此,自动内存布局操作是...

    OA1500_Layouts_original_.pcb_

    标题中的"OA1500_Layouts_original_.pcb_"暗示了这是一个关于OA1500设备的原始布局设计文件,其中".pcb"是印刷电路板(Printed Circuit Board)的文件扩展名,通常用于表示电子产品的电路板设计。PCB设计是电子工程...

    SharePoint 2013 页面访问,Url中间多一段_layouts15start#.pdf

    例如,博客“***”和“***”提供了关于MDS的详细介绍和实施指导。 需要注意的是,在某些情况下,可能会遇到MDS未正确应用导致的页面加载问题。例如,当尝试访问特定的页面(如“***”)时,虽然地址正确,但是URL...

    Android-Layouts

    ### Android Layouts详解 在Android应用开发中,布局(Layout)是组织用户界面的重要组成部分,它决定了应用界面的外观和结构。布局管理器用于控制视图(View)和视图组(ViewGroup)如何被放置在屏幕上。通过合理...

    Keyboard_Layouts:我的键盘布局的集合

    总结来说,"Keyboard_Layouts"集合是关于键盘布局的资源包,可能包括多种布局设计、安装教程、相关工具和文档,旨在满足不同用户对个性化和高效输入的需求。通过探索这个集合,用户有机会找到更适合自己的键盘布局,...

    thymeleaf Examples: 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模板

    标题“_layouts:jekyll模板”指的是 Jekyll 中的 `_layouts` 文件夹,这个文件夹存放着网站的整体布局和设计模板。每个布局模板定义了页面的基本结构,例如页头、主要内容区域和页脚。在 Jekyll 中,你可以创建多个...

    android 窗口布局 layouts 下的各种控件

    在Android开发中,窗口布局(layouts)是构建用户界面的核心元素。它们决定了应用程序屏幕上元素的排列方式和相互关系。本篇文章将深入探讨Android布局中的三种主要控件:RelativeLayout、GridLayout和LinearLayout...

    moss自定义登陆页面(技術文檔)

    这个页面位于`\_layouts`文件夹内,这是一个IIS虚拟目录,实际上映射到服务器上的真实路径,通常是`C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS`。该`\_layouts`...

    CursoKotlin_Layouts:添加TextView

    【标题】:“CursoKotlin_Layouts:添加TextView” 在这个教程中,我们将深入探讨如何在Android应用程序中使用Kotlin语言来添加和操作TextView组件。TextView是Android开发中最基础且常用的UI元素之一,它用于显示...

    client_variable:在JavaScript中使用Rails变量

    客户端变量 将您的rails变量导出到客户端 安装 将此行添加到您的应用程序的Gemfile中: gem 'client_variable' 安装并将其添加到Gemfile后,需要运行生成器: ...将此行添加到app/views/layouts/ap

    Android Layouts

    在安卓平台上构建复杂布局是移动应用开发的一个重要组成部分,它直接影响到应用的可用性和用户体验。安卓提供了多种布局方式,开发者可以根据需要选择和组合这些布局,以创建复杂的图形结构。以下是对安卓布局系统...

    layouts_微信面板demo_DEMO_

    微信面板程序的界面布局demo,来源于网络,很漂亮

    krogius2019-Flexible Layouts for Fiducial Tags.pdf

    这篇标题为“krogius2019-Flexible Layouts for Fiducial Tags.pdf”的文档主要讨论了在计算机视觉领域中,通过使用柔性布局提高fiducial tags(基准标签)的性能。文档的标题和描述中提到了几个关键概念,包括...

    Keymagic_Layouts:缅甸语言的 Keymagic 键盘布局

    Keymagic_Layouts 缅甸语言的 Keymagic 键盘布局 Keymagic 键盘布局文件 对于开发者 创建您自己的 Keymagic 键盘布局 使用 kEditor 打开。 编辑你想要的并编译它 对于用户 在您的计算机中安装 Keymagic 键盘管理器...

    图书管理系统报告.pdf

    # management_books/app/views/layouts/books.html.erb &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; ;charset=UTF-8"/&gt; ...

    ExtJS-Layouts.pdf

    Box Model Layout vs Sencha Layouts 传统的Box Model布局依赖于HTML和CSS的自然流布局,而Sencha的布局则是一种更为高级的容器管理机制。它允许开发者定义组件的位置、大小以及相互关系,而不受制于底层HTML结构...

    log4j_api 英文

    Log4j API允许开发者创建自定义的Appenders、Filters和Layouts,以满足特定需求。此外,通过使用Lookup机制,配置文件可以引用运行时环境中的变量,增加配置的灵活性。 总结来说,Log4j API为Java开发者提供了一个...

    Visual Studio Csharp 开发Android 之Tabbed Layouts

    在Android应用开发中,Tabbed Layouts是一种常见的用户界面设计,它允许用户通过标签页来切换不同的内容区域。本教程将聚焦于如何使用Microsoft的Visual Studio集成开发环境(IDE)和C#语言来构建Android应用中的...

    agdq15-layouts:Awesome Games Done Quick 2015 期间使用的在线图形

    #agdq15-layouts 这是一个包。 您需要安装 NodeCG 才能运行它。 这些都是在 Awesome Games Done Quick 2015 中使用的所有在线图形。安装安装到nodecg/bundles/agdq15-layouts用法此捆绑包不打算逐字使用。 许多资产...

Global site tag (gtag.js) - Google Analytics