`
mypages
  • 浏览: 90919 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

创建页眉和页脚的布局问题

阅读更多

 

       想要为Web应用程序上的每一页创建页眉和页脚。某页必须有特定的页眉页脚,想要动态决定对于给定请求该采用哪种页眉页脚。

解决方案

多数Web应用程序要求定义页眉页脚文件,并且自动包含这些文件到每一页的顶端和底部。Rails转化了这种模式。被调用的单一文件包含页眉和页脚,并且每个特殊页的内容被插入进这些文件中。

在Web应用程序中应用每一页的布局,创建名为app/views/layouts/application.rhtml的文件。类似如下:

<html>
 <head>
 <title>My Website</title>
 </head>
 <body>
 <%= @content_for_layout %>
 </body>
</html>

任何布局文件里的关键信息是指示<%= content_for_layout %>。这会被每个单独页面的内容所替代。

可以为每个控制器 创建自定义的布局,通过在app/views/layouts文件夹里独立创建文件来实现。比如,app/views/layouts /status.rhtml是status控制器、StatusController 的布局。PriceController的布局文件是price.rhtml。

重载site-wide layout 来自定义布局,它们并没有加上这个。

讨论

正如主视图模板一样,布局模板已经访问了所有操作设定的实例变量。任何可以在视图里做的事情,都可以在布局模板里完成。这意味着可以完成这样的事情,比如在操作中动态设定页面标题,然后在布局里使用它们:

class StatusController < ActionController:Base
 def index
 @title = "System Status"
 end
end

现在application.rhtml文件可以访问@title,类似如下:

<html>
 <head>

 <title>My Website - <%= @title %></title>
 </head>
 <body>

 <%= @content_for_layout %>
 </body>
</html>

application.rhtml 并不是仅仅针对Rails应用程序的控制器而发生在默认的布局模板里。它这样发生是因为每个控制器都是从ApplicationController继承 而来。默认来说,布局的名字是从控制器类名得到的。因此ApplicationController转变为application.rhtml。如果有一 个名为MyFunkyController的控制器,那么布局的默认文件名会是app/views/layouts/my_funky.rhtml。如果 这个文件并不存在,Rails 会查找对应于MyFunkyController父类的布局,并且会在app/views/ layouts/application.rhtml里找到。

要想改变一个控制器的布局文件,调用其布局方法:

class FooController < ActionController:Base
 # Force the layout for /foo to be app/views/layouts/bar.rhtml,
 # not app/view/layouts/foo.rhtml.
 layout 'bar'

end

如果在某次操作中使用render方法(参考15.5节),可 以传递:layout变量到render 里,并且给此次操作一个不同于其他控制器的布局。在本例中,FooController的大多数操作使用bar.rhtml作为它们的布局,但是 count操作使用的是count.rhtml:

class FooController < ActionController:Base
 layout 'bar'

 def count

 @data = [1,2,3]
 render :layout => 'count'
 end
end

甚至可以得到没有布局的操作。本段代码赋给FooController 的所有操作一个bar.html 的布局,除去count操作,它根本没有任何布局:它负责自己所有的HTML。

class FooController < ActionController:Base
 layout 'bar', :except => 'count'
end

如果需要动态计算布局文件,传递一个方法符号到布局方法中。这告诉布局在每次请求时都调用该方法。该方法的返回值定义了布局文件。方法可以调用action_name来决定当前请求的操作名字。

class FooController < ActionController:Base
 layout :figure_out_layout

 private

 def figure_out_layout
 if action_name =~ /pretty/

 'pretty'

# use pretty.rhtml for the layout

 else

 'standard'

# use standard.rhtml

 end

 end

end

最后,布局接受lambda 函数作为一个参数。这使得可以用更少的代码动态决定布局:

class FooController < ActionController:Base

 layout lambda { |controller| controller.logged_in? ? 'user' : 'guest' }
end

对于程序员和设计者来说,使用布局文件取代单独的页眉和页脚, 这都是很好的事情:更加容易查看这个图片。但是如果需要使用显式的页眉页脚,那么也可以。创建名为app/views/layouts /_header.rhtml和app/views/layouts/_footer.rhtml的文件。这里的下划线表明它们是“局部变量”(参考 15.14 节)。要使用它们,设置操作使之不使用任何布局,并且在视图文件里编写下述代码:

<%= render :partial => 'layouts/header' %>
... your view's content goes here ...
<%= render :partial => 'layouts/footer' %>

分享到:
评论

相关推荐

    POI导出Word 页眉 页脚 标题设置

    - 设置显示属性,如页面布局和边距。 - 最后,使用`write()`方法将文档写入文件。 7. **依赖项** 要使用Apache POI进行Word处理,需要确保项目中包含了正确的依赖。通常,这将包括`poi-ooxml-schemas`, `poi-...

    word页眉页脚设置工具

    通过“布局”&gt;“分隔符”&gt;“下一页”来创建新节,然后分别设置各节的页眉和页脚。 2. **奇偶页不同**:对于双面打印的文档,有时需要奇偶页的页眉和页脚不同。在“设计”选项卡下的“页眉和页脚工具”中,勾选“奇偶...

    ITextSharp5.0生成PDF(含页眉页脚的生成)

    通过这种方式,你可以利用ITextSharp 5.0创建一个带有自定义页眉和页脚的PDF文档。这个过程不仅适用于简单的文本,还可以进一步扩展以支持图片、表格和其他复杂布局。在实际应用中,你可以根据需求调整页眉和页脚的...

    ListView页眉页脚效果

    1. **创建页眉和页脚视图** 在布局文件中,为页眉和页脚创建单独的XML布局,例如`header.xml`和`footer.xml`。这两个布局文件可以包含任何你想要展示的控件,如TextView、ImageView等。 2. **自定义Adapter** ...

    关于word文档页眉页脚的设置问题

    - 在“布局”选项卡下找到“分隔符”按钮,选择“分节符”下的不同类型(下一页、连续等),这样就可以在不同的章节使用不同的页眉页脚了。 - 设置完成后,回到“插入”选项卡,选择相应的页眉或页脚样式进行编辑。 ...

    Latex页眉页脚设置

    3. **定义页眉页脚内容**:使用`fancyhdr`提供的命令来设置页眉和页脚的具体内容。这些命令包括但不限于: - `\lhead{}`:左页眉。 - `\chead{}`:中页眉(仅适用于奇数页)。 - `\rhead{}`:右页眉。 - `\lfoot...

    indesign里面统一设置页眉页脚页码

    在Adobe InDesign中,页眉和页脚是文档布局的重要...在实际操作中,配合提供的"创建页眉页脚和页码"图片教程,将更直观地掌握这一过程。记住,练习是熟练掌握InDesign的关键,多尝试、多实践,你将很快掌握这个功能。

    SectionedRecyclerView可以添加页眉和页脚RecyclerView.rar

    《使用SectionedRecyclerView实现添加页眉和页脚的 RecyclerView》 在Android开发中,RecyclerView作为一个高效、可重用的视图组件,广泛用于显示大量数据列表。然而,原生的RecyclerView仅提供基本的列表展示功能...

    GridView的页眉页脚

    1. **创建页眉和页脚View**:在XML布局文件中定义页眉和页脚的视图,并设置相应的背景颜色或图片。为了实现渐变效果,可以使用GradientDrawable,通过设置startColor和endColor属性创建颜色渐变。 ```xml android...

    word中添加页眉页脚

    总结来说,这段代码展示了如何通过VC++和Word的COM接口来实现自动化创建页眉和页脚,包括设置页眉页脚内容、页面边距以及自动图文集插入页码,从而提高文档处理效率和一致性。这种技术适用于需要批量处理或定制化...

    在开发时,需要有打印功能的,进行打印时去除页眉页页脚

    "打印时去除页眉页脚"是一个常见的需求,特别是在需要干净、整洁的打印输出时。以下是一些关于这个主题的重要知识点: 1. **CSS Print媒体查询**: CSS(层叠样式表)提供了针对不同设备或输出方式的样式规则。在...

    struts下载带有页眉页脚水印的pdf文件

    在这里,FreeMarker模板将用于定义PDF的布局和内容,包括页眉和页脚的信息。开发者可以创建一个FTL(FreeMarker模板语言)文件,其中包含静态文本和变量,变量由后台程序填充,从而生成动态PDF。 iText 是一个用于...

    iText生成word代码及jar包(含页眉页脚)

    4. **Itext生成页眉页脚代码.txt**:这个文本文件包含了使用iText来添加页眉和页脚的具体Java代码。通常,页眉和页脚在文档中起到标识、标题和页码的作用。这个代码示例将指导开发者如何在创建的Word文档每一页上...

    EasyHeaderFooterAdapter,一个android库,向recyclerview添加页眉和页脚。.zip

    "EasyHeaderFooterAdapter"是一个专门为解决这一问题而设计的开源Android库,它为RecyclerView提供了便捷地添加页眉和页脚的功能。 EasyHeaderFooterAdapter的核心思想是将原始的RecyclerView.Adapter扩展,增加了...

    itextpdf实现页眉页角

    在实际项目中,可能还需要考虑更多细节,如页码的动态计算、多列布局、页眉和页脚的位置调整等。此外,如果需要在页脚中包含页码,可以使用`PdfPageEvent`接口的`getCounter()`方法获取当前页码。 总之,iTextPDF库...

    java批量处理word,包含批量转word与xml互转,去除首尾页面,批量追加文字,批量修改log图片,创建页眉、页脚,修改无规则的数据等等

    创建页眉、页脚:docx4j支持创建和编辑页眉、页脚,通过创建HeaderPart和FooterPart对象,然后将其关联到主文档。可以设置不同的页眉和页脚样式,包括文本、字体、大小和对齐方式等。 修改无规则的数据:对于文档中...

    word2021中页眉页脚七个使用技巧.docx

    - **调整页眉页脚布局**:包括对齐方式、字体大小等基本格式设置。 - **插入自动图文集**:比如文档创建时间、页数统计等,这些信息可以通过特定命令快速插入,方便快捷。 - **快速返回主文档编辑**:当完成页眉页脚...

    Word文档中页眉页脚怎么设置.docx

    ### Word文档中页眉页脚设置详解 #### 一、引言 在Word文档中,合理设置页眉和页脚不仅能够提升文档的专业性,还能为读者提供更佳的阅读体验。例如,页眉通常用来放置文档标题或章节标题,而页脚则常用于显示页码...

    iText把jsp转pdf并支持添加页眉页脚

    在这个场景中,"iText把jsp转pdf并支持添加页眉页脚"涉及到的是如何使用iText将动态生成的JSP页面转换为静态的PDF文件,并在此过程中添加自定义的页眉和页脚。 JSP(JavaServer Pages)是一种服务器端的编程技术,...

    Word2021怎样将图片插入到页眉或页脚中.docx

    4. **选择或创建页眉**:你可以直接选择一个预设的页眉样式,或者点击“编辑页眉”来自定义页眉内容。选择“编辑页眉”后,文档的页眉区域会被选中,此时你可以在这个区域内进行编辑。 5. **插入图片**:现在转到...

Global site tag (gtag.js) - Google Analytics