博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web设计的Ruby on Rails 第2章 变量、数组、散列表
阅读量:6887 次
发布时间:2019-06-27

本文共 2339 字,大约阅读时间需要 7 分钟。

Web设计的Ruby on Rails

第2章 变量、数组、散列表

这章将对生成一个变量并嵌入模板,以及 HTML 数据生成的方法进行说明。

请看下面的 Ruby 程序。

@title = '新闻发布'

这是实例变量定义的例子。特征是以符号(@)开头。实例变量的值,可以像下面一样嵌入到模板中。

<%= @title %>

把这个和开头的程序结合在一起,便可生成下面的 HTML 代码。

新闻发布

Ruby on Rails 中,嵌入实例变量并从模板中生成 HTML 代码,叫做渲染。定义渲染中实例变量的程序叫做动作

再回过头来看一下开头的程序,和其他的编程语言一样,Ruby的字符串包含在单引号或双引号中。但Ruby句末没有必要加上特别的终端符号。这和Java、 Perl、 PHP等语言用冒号结句不同。但是Ruby也可以用冒号划分句子。

@title = '社长致辞'; @subtitle = '公司经营理念'

那么,试试用数组做更复杂一点的东西吧。

数组(Array)就是对象的集合。我们还没有对“对象”进行说明,这里就换个说法叫数据吧。数组的特征,是其内部的对象被排序,可以凭借编号(标签)选取。

下面这个 Ruby 程序,在实例变量 @principles 中存储字符串的数组。

@principles = ['自律', '和谐', '变革']

Ruby中,用大括号定义数组。数组的各个元素间用逗号隔开。要选取指定元素,就在变量名后面把指定元素的编号用大括号括住。下面的 Ruby 代码返回‘自律’的字符串。请注意数组的编号是从 0 开始的。

@principles[0]

下面的例子试着将 @principles 的各个元素嵌入到模板。

<ol>

<% @principles.each do |p| -%>

  • <%= p %>
  • <% end -%>

    </ol>

    这里使用了数组方法 each。关于“方法”的说明相当冗长,我们把它放到后面。这里把数组的元素一个个地代到局部变量 p 中,并重复 do 到 end 的操作。局部变量是在某个小范围内一次性使用的变量。渲染这个模板,产生以下结果。

    1. 自律
    2. 和谐
    3. 变革

    仔细比较 Ruby 程序、模板和产生的 HTML 代码,当然首先是要直观地掌握。

    再看一下模板。

    最明显的是 <% ... %> 这样的结构。这个结构在最开始看见的模板里也出现过,但是在这次的模板里,有些类型在 <% 后面没有等号(=)。不管是哪一种情况,<% 和 %> 之间都是作为 Ruby 代码解析。顺便说一下,所谓解析,是指运行程序并得到结果的意思。有等号的时候,嵌入得到的值,反之就不嵌入。

    还有一个,有些类型在 %> 后面有减号(-),有些又没有。这个减号表示删去 %> 后面的换行符。没有减号的情况下,在生成的 HTML 代码的 ol 元素里另外插入一个空行。虽说不管有没有空行对浏览器上的显示没有影响,但这是为了尽量让最后的 HTML 代码简洁。

    接下来要注意的是 Ruby 的独特记法,用竖线(|)圈住局部变量。看下面的例子。

    <% 4.times do |i| -%> <%= i + 1 %>
    <% end -%>

    渲染后得到如下结果。

    1
    2
    3
    4

    在 each 、 times 这样的方法后面, do 与 end 之间的 Ruby 代码叫代码块。整数对象的方法 times 具有向代码块传递 0 到 该整数对象值 -1 的整数值,并再次解释执行代码块的功能。两根竖线间表示的就是向代码块传递的值,即参数。(对整数是对象并且具有方法感到吃惊的人尽情地享受这样的乐趣吧。)

    之后我们来尝试一下散列表

    散列表也叫关联数组,在对象的集合这一点上与数组是相同的。不同点有2个。一是在各个元素间没有顺序。二是各个元素被赋予关键字。请看下面的 Ruby 程序。

    @boss = { 'name' => '山田太郎', 'age' => 58, 'title' => '董事长' }

    实例变量 @boss 中包含了散列表。这个散列表的对象有三个。此外,关键字是“name”,值是“山田太郎”。再次提醒一下,散列表各个元素间是没有顺序的。

    散列表用大括号表示。元素间用逗号隔开,关键字和值用 => 连接。

    选取值的写法和数组相似。但是在大括号中指定的是元素的关键字而不是编号。下面就继续对使用散列表的模板及其渲染结果进行说明。

    职务 <%= @boss['title'] %>
    姓名 <%= @boss['name'] %>
    年龄 <%= @boss['age'] %>
    职务 董事长
    姓名 山田太郎
    年龄 58
     

    转载于:https://www.cnblogs.com/jiangwenwen/archive/2012/08/02/2619642.html

    你可能感兴趣的文章
    几乎所有编程语言的hello, world程序(3)
    查看>>
    CentOs 设置静态IP 方法
    查看>>
    Ubuntu 16.04源码编译安装nginx 1.10.0
    查看>>
    2017"百度之星"程序设计大赛 - 资格赛-度度熊与邪恶大魔王(dp+后缀最小值)
    查看>>
    Node + vue 实现移动官网
    查看>>
    Windows上Python2.7安装Scrapy过程
    查看>>
    【转载】C#调用国家气象局天气预报接口
    查看>>
    hdu1568
    查看>>
    375 Inscribed Circles and Isosceles Triangles 等腰三角形 内接圆 圆周率PI表示
    查看>>
    apache中开启rewrite
    查看>>
    JQuery find方法Bug
    查看>>
    PAT (Advanced Level) 1108. Finding Average (20)
    查看>>
    FZU 1911 Construct a Matrix
    查看>>
    CodeForces 667C Reberland Linguistics
    查看>>
    CodeForces 747D Winter Is Coming
    查看>>
    CSS动画(3) - animation
    查看>>
    URL重写
    查看>>
    JavaScript 面试题,给大家补补基础,加加油,埋埋坑!
    查看>>
    Java LinkedHashMap类源码解析
    查看>>
    peer review
    查看>>