第一个rails简单示例

每学一门语言的第一步都是充满坎坷的(也许是个人问题,哈哈)。插几句“广告”,前几天看了《Ruby Programming》中文版,觉得写得不错,够基础。灰常适合初学者。今天时间比较充裕,所以在看《应用Rails进行敏捷Web开发》,按照上面的第一个rails示例来进行我的第一个rails示例。

啰嗦几句:rails是强制的mvc框架,默认做了很多工作,这样就必须有很多约定,然后这些约定必然为造成一定的麻烦。引用《应用Rails进行敏捷Web开发》一书中的一幅图(个人觉得很经典),对一次url请求的解析:

开始“第一个rails程序”之旅

1、  创建rials项目

声明,本人用aptana studio 3 eclipse插件。创建rails项目,不多说,如下图:

2、  创建完成后rails项目结构,如下图:

 

也在摸索中,不过看文件夹名称就应该知道里面放的是啥。哈哈。

3、  创建say_controller.rb,位置如下图:

 

 

4、  输入灰常简单的代码,如下:

#endoding: utf-8

class SayController < ApplicationController
  def hello
  end
end


5、  启动rails server,eclipse中需开启一个终端,然后输入:rails server 或者rails s。

Eclipse中终端位置如下图:

 

 

开启终端,输入命令后:

 

6、  输入:http://localhost:3000/say/hello

如果出现下图所示,表明调用成功:

 

 

注:在《应用Rails进行敏捷Web开发》一书中,输入http://localhost:3000/say/hello现实如下图:

 

 

这个可能是rails版本的问题。具体不详,但也不影响什么。

 

 

 

第一个rails项目就此就结束了。下面我要讲述一下在它运行成功之前遇到的问题。

 

继续要啰嗦几句,所有问题都是针对一个问题展开的,在解决这个问题的过程中,加深了对rails的mvc的各种约定的里面。下面将一一道来。

 

当完成简单rails代码编写后,运行了server。输入url后,得到如下图所示的异常:

 

终端异常信息:ActionController::RoutingError (No route matches "/say/hello")

大概的意思就是url中出现的/say/hello没有与之匹配的控制器。Google了一下,找到了解决方法:

1、  找到routes.rb文件,所在位置如下图:

 

2、 打开routes.rb后找到# match ':controller(/:action(/:id(.:format)))',将注释打开。(我是在最后一行找到的)。

3、 输入对应的url即可正常访问。

4、 还没结束,然后我就想到了其他问题,我将控制器的文件名称改成say1_controller.rb,然后再次输入url,结果如下图:

 

 

                  又找不到了,哈哈。接着我换了一个url如下:http://localhost:3000/say1/hello,结果如下:

        

        

 

不知道大家看出来问题没有:因为我将文件名改成say1_hello.rb,而没有将SayController类名修改,修改后,结果如下:

 

 

也访问OK!

 

好啦,可能好多地方没说清楚吧,哈哈。大家谅解。

 

总结http://localhost:3000/say/hello,的解析过程如下:

 

1、            其中say对应say_controller.rb,注意_controller我的理解为rails默认controller命名方式。将_之前的部分解析成控制器。

2、            say_controller.rb中定义的类名必须为SayController。

3、            hello对应say_controller.rb文件中SayContoller定义的hello方法。

 

本人小白,难免理解有问题。如理解有问题,请大家指出,以免误导大家。

posted on 2011-07-15 11:32  六子liu  阅读(1825)  评论(5编辑  收藏  举报

导航