ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Ruby on Rails:动作视图纵览

Ruby on Rails:动作视图纵览

原创 Linux操作系统 作者:izhonglin 时间:2019-06-15 13:06:07 0 删除 编辑
本文将讨论RoR中提供的基础服务之一:动作视图。动作视图可以使你更快速地将数据展现给用户。在本文中将介绍一些动作视图的服务,并且将举一个例子来说明如何使用动作视图。

  在MVC模式中的V,即视图(View),它的作用是将数据以用户所需要的形式展现出来,和传统的模式不同的是,视图在展现数据时可以省去许多不必要的细节。也就是说,任何基于MVC模式的框架(framework)都应该提供更容易的方法提取和显示需要的数据。RoR就是这样的框架。它将动作视图作为其核心组件之一。

  在本文中,将主要讨论动作视图的基础服务。第一部分介绍了和动作视图相关的服务。在第二和第三部分讨论动作视图的一些基本功能,在最后一部分,将给出一个实例来说明如何使用动作视图。

  动作视图的服务

  视图的功能就是向用户展现数据。下面列举了动作视图中的主要服务:

  ·模板

  ·布局

  ·分页

  当然,在动作视图中还在很多的服务,但上面的三个服务在动作视图中是最重要的。

  模板

  所谓模板,就是在一个文件中预定义了一些共用的资源,应用程序通过使用这些共用的资源,可以简化应用程序的开发过程,从而达到重用的目的。在动作视图中的模板所包含的资源主要就是布局信息、一些数据所存放的路径等。在动作视图中的模板很多,如HTML格式的登录模板、以及Email模版等。

  布局

  从软件(包括Web和桌面程序)上来说,布局就是将GUI中的控件进行组织和安排,也就是说布局控制着GUI控件(如按钮、文本框等)如何被放置在界面上。例如,布局可通过垂直等间距方式将要排列的控件按垂直方向等间距进行排列。

  分页

  分页的作用就是将大量的数据分批地显示在页面上,可通过"上一页"和"下一页"进行页间的切换。分页有些象用打印机打一个大的文档,一张纸打不下,就将数据分成多张纸来打。虽然将分页这种显示数据的方式应用到程序中可以解决大数据量显示的问题,但这同时又会带来另外一个问题,那就是如果对数据进行导航,也就是翻页问题。

  除了以上提到的服务外,在动作视图中还有其它的服务,如格式化助手等。但是上面所介绍的三个服务是动作视图中最重要的。在下一部分,我们将讨论如何使用这些服务。

  模板和格式化助手

  动作视图为我们提供了很多建立动态视图的服务。下面是动作视图提供的主要的服务:

  ·模版

  ·格式化助手

  ·分页

  ·布局

  上面的4种服务,除了格式化助手外,其它三个服务都已经在前面介绍过了。

  模板

  就象以前讨论的一样,在模板中包含了一些代码、标记、简单文本或它们的组合。在其中的代码可以通过Controller中的访问信息提供动态的内容。代码通过执行环境访问信息。这个环境为代码提供了以下的信息:

  1. Controller的实例变量,通过这些变量可以将数据从Controller传给模板。

  2. 作为存取器的Controller对象。这些对象包括对象头、参数、请求、响应和会话。

  3. 当前正在使用的Controller对象。模板代码可以从这个Controller对象中调用它的public方法。

  在RoR中的模板是RHTML文件。RHTML文件有些类似于JSP文件,在RHTML文件中有静态的HTML,也有动态的内容。动态的内容可以由内嵌的代码生成技术产生,也可以用手工编写。如以下的RHTML文件显示了当前的日期和时间:

<h1>大家好!</h1>
<p>
<b>
当前日间: <%= Time.now %>
</b>
</p>

  和JSP类似,在RHTML中有两种写动态代码的方法,一种是将代码写到<%= … %>中,另外一种是将代码写在<% … %>中。在<%= … %>中的Ruby语句只是当作一个值返回,如果其中含有多条语句,则返回最后一条语句的值。而将代码放到<% … %>中,则按着正常的程序逻辑执行。虽然RHTML中可以执行Ruby语句,但最好不要将商业逻辑代码写在RHTML中。代码的执行原理可看下面的例子。

  如果有以下代码:

<% 5.times do %>
<5>
<% end %>

  在执行RHTML时,将上述代码转换为Ruby语句:

5.times do
puts "<5>"
end

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9403012/viewspace-167342/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-08-16

  • 博文量
    87
  • 访问量
    63308