Rails Demo示例

让我们编写一个简单的应用来验证我们已经在计算机上安装好了。根据下面的步骤,你可以最终让Rails应用工作。

1.1. 创建新的应用

当你安装完成Rails框架时,你也得到一个新的命令行工具,rails,它常用于构建每个你所编写的新Rails应用。Rails命令行工具简单的为我们创建目录结构,并且生成一些标准的Rails代码。

为了创建第一个Rails应用,打开(cmd)命令行窗口,并且进入(cd)到你想创建应用的目录中,例如:D盘的work目录,在该目录下,使用rails命令创建一个称为demo的应用,如果在该目录下已经存在demo应用,那么会被覆盖掉。

> D:

> mkdir work

> cd work

> rails new demo

create 出现一堆create开始的行,创建目录结构和一些标准代码

rails命令创建一个名为demo的目录,进入到该目录下可以查看相关的目录,如下:

2011/08/22 08:26 36 .gitignore

2011/08/22 08:26 <DIR> app

2011/08/22 08:26 <DIR> config

2011/08/22 08:26 154 config.ru

2011/08/22 08:26 <DIR> db

2011/08/22 08:26 <DIR> doc

2011/08/22 08:26 744 Gemfile

2011/08/22 08:26 <DIR> lib

2011/08/22 08:26 <DIR> log

2011/08/22 08:26 <DIR> public

2011/08/22 08:26 264 Rakefile

2011/08/22 08:26 9,126 README

2011/08/22 08:26 <DIR> script

2011/08/22 08:26 <DIR> test

2011/08/22 08:26 <DIR> tmp

2011/08/22 08:26 <DIR> vendor

进入到demo目录,启动一个本机的Web服务器运行新创建的demo应用。

> cd demo

> rails server

运行那个Web服务器依赖于你安装的服务器,WEBrick是一个纯ruby的Web服务器。你可以通过下面的命令强制Rails使用WEBrick:

> rails server webrick

运行该命令后,会在0.0.0.0的3000端口上启动Web服务器,现在我们可以在IE浏览器中输入http://localhost:3000来访问新建的demo应用,如下所示。

当我们编写应用程序代码并且使用浏览器运行它,可以使用该控制台窗口来跟踪输入的请求。如果你想关掉应用程序,你可能按Crtl-C来停止WEBrick。

至此,我们有一个新的应用程序运行,但是没有为应用编写任何的代码。

1.2. Hello,Rails!

下面编写一个“Hello,World!”程序来尝试一个新的系统。让我们开始创建一个简单的应用程序发送“Hello,World!”给浏览器。

Rails是一个模型-视图-控制(MVC)框架,Rails从浏览器中接收请求,解码请求找到控制器,并且调用控制器中的一个动作方法。控制器这是调用某一个视图来给用户显示结果。下面我们需要为控制器和视图编写代码,也需要一个连接它们的途径。我们不需要为模型编写代码,因为我们不处理任何数据。

下面我们使用rails命令的生成脚本来为项目project创建一个新的控制器。调用命令rails generate来创建一个名为say的控制器,确保在demo目录下运行命令,传递你想创建的控制器名称和一些动作的名称。

demo> rails generate controller Say hello goodbye

执行该命令会添加新的Ruby脚本和目录到你的应用中,其中Say为控制器名称,hello和goodbye为Action动作名称。

我们查看的第一个源文件是控制器,在app/controllers/say_controller.rb文件中可以找到它。

使用你喜欢的编辑器打开该控制器文件。

class SayController < ApplicationController

def hello

end

def goodbye

end

end

其中:SayController是一个从ApplicationController继承过来的类,它自动的获得所有缺省控制器的行为。类中的hello和goodbye方法就是动作函数。

现在使用浏览器访问http://localhost:3000/say/hello,将会显示如下页面:

Say#hello

Find me in app/views/say/hello.html.erb

在添加新的控制器时,命令行工具为我们增加了6个文件和一个新的目录。那个目录包含用于控制器视图的模版。从网页中看到视图模版应该在app/views/say目录中。现在让我们来编译app/views/say目录中的hello.html.erb视图文件,在该文件中添加一些基本的HTML代码:

<h1>Hello from Rails!</h1>

在保存文件后,刷新浏览器窗口,你应该可以看到来自Rails的问候。

总的来说,我们在Rails应用中查看了一个是控制器文件(app/controllers子目录中),并且修改了显示网页的视图模版(app/views子目录中)。

目前Rails应用相当的枯燥,只是显示一个静态页面,为了让它获得动态效果,让我们每次刷新页面时显示当前的时间。

有很多方法来创建Rails的动态模版,Builder、AJAX、RJS和在模版中嵌入Ruby代码。ERb是一个过滤器,它作为Rails安装的一部分,输入.erb文件,输出一个转换的版本(通常是HTML文件)。在<%=和%>之间的内容作为Ruby代码解析和执行,其它的原封不动的输出到页面上。

在app/views/hello.html.erb中动态显示时间的代码如下:

<h1>Hello from Rails!</h1>

<p>

It is now <%= Time.now %>

</p>

让我们刷新浏览器窗口,将会看到以Ruby标准格式显示的当前时间。

接下来,我们把获得时间的功能放到控制器中实现,而视图中只是显示控制器中得到的当前时间。我们将修改在控制器(app/controller/say_controller.rb)中的动作方法来设置时间值到@time变量中。

class SayController < ApplicationController

def hello

@time = Time.now

end

def goodbye

end

end

在.html.erb模版中使用这个实例变量替换掉时间:

<h1>Hello from Rails!</h1>

<p>

It is now <%= @time %>

</p>

当我们刷新浏览器窗口时,将会再次看到当前的时间,说明控制器和视图之间的通信已经成功了。

注:在控制器中加工数据,而在视图中只是做呈现,这样会更加的灵活。

先前我们已经定义了一个goodbye动作,在app/vies/say中能找到该动作的视图模版(goodbye.html.erb),修改模版。

<h1>Goodbye!</h1>

<p>

It was nice having you here.

</p>

在浏览器中输入http://localhost:3000/say/goodbye链接,你会看到goodbye的网页。接下来,我们链接两个网页。我们把在hello网页上放置一个链接,单击该链接我们可以使用goodbye网页,反之亦然。

在hello.html.erb文件的最后添加goodbye网页的链接:

<p>

Say <a href="say/goodbye">Goodbye</a>!

</p>

在goodbye.html.erb文件的最后添加hello网页的链接:

<p>

Say <a href="say/hello">Hello</a>!

</p>

注:可以使用link_to函数来添加链接,添加的方法如下:

<%=link_to “Hello”, say_hello_path%> again.

本节构建一个玩具应用,步骤如下:

1)如何创建一个新的Rails应用,如何在应用中创建一个新的控制器;

rails new <application>

rails server

rails generate controller <controller name> <actions name>

2)如何在控制器中创建动态内容,并且利用视图模版来显示;

修改app/controllers中的控制器代码(*_controller.rb)。

修改app/views中的视图模版(*.html.erb)

<%= @time%> <% for file in files %> <% end %>

3)如何将网页链接到一起。

<%=link_to “title”, method%>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值