Ruby on Rails入门 –写第一个程序

写之前要安装好环境, 如果是windows请参看:

在Windows平台上学习Ruby on Rails 的环境准备

linux参看:

在ubuntu6.06上安装apache2.2X + mysql + PHP + Ruby on Rails + Mongrel Cluster

mac参看:

从Ubuntu转到Mac OS X

所有命令行在Ruby Console Window里输入.

1.创建一个程序:work> rails demo
2.启动内建的WEBrick服务器:demo> ruby script/server
WEBrick是用来调测ROR程序的理想Web服务器. 这个服务器定时刷新访问服务器文件内容,方便调试.
如WEBrick非默认服务器,使用demo>ruby script/server webrick可以强制启动这个服务器.
启动后可用http://localhost:3000地址访问.
3.URL解释:
http://localhost:3000/demo/say/hello
相应功能如下:
http://域名/程序/Controller/Action

4.创建一个Controller: demo> ruby script/generate controller Say
修改相应文件/demo/app/controllers/say_controller.rb为
class SayController < ApplicationController
 def hello
 end
end
*使用def 定义Action
5.创建相应模板文件/demo/app/views/say/hello.rhtml
文件内容:
<html>
 <head>
  <title>Hello, Rails!</title>
 </head>
 <body>
  <h1>Hello from Rails!</h1>
 </body>
</html>
rhtml文件是ERb(Embedded Ruby)文件格式. 在调用时Rails将解释里面的Ruby语句.
如:
<ul>
 <li>Addition: <%= 1+2 %> </li>
 <li>Concatenation: <%= "cow" + "boy" %> </li>
 <li> 1.hour.from_now</li>
 <li>Time in one hour: <%= 1.hour.from_now %> </li>
</ul>
可访问http://localhost:3000/say/hello查看效果.

中的<%=…%>内容将被解释.

*<%=…%>和VBScript的功能相似.

为了使<%=…%>之间的内容不带有HTML特殊符号,加强代码安全性,可使用h()将特殊字符进行处理,如:
Email: <%= h("Ann & Bill <frazers@isp.email>") %>
上面的处理效果是:
Email: Ann &amp; Bill &lt;frazers@isp.email&gt;

通常的Ruby语句放在<%…%>内,如:
<% 3.times do %>
 Ho!<br />
<% end %>
Merry Christmas!

但会形成多余的换行符,可以使用<%…-%>解决这个问题.
如:
<% 3.times do -%>
 Ho!<br />
<% end -%>
Merry Christmas!

6.让页面显示动态内容
修改/demo/app/controllers/say_controller.rb为:
class SayController < ApplicationController
 def hello
  @time = Time.now
 end
end

修改/demo/app/views/say/hello.rhtml为:
<html>
 <head>
  <title>Hello, Rails!</title>
 </head>
 <body>
  <h1>Hello from Rails!</h1>
  <p>
   It is now <%= @time %>
  </p>
 </body>
</html>

*使用@time定义变量

将代码和模板最大可能分离,以加强代码的灵活度.
7.创建链接
修改/demo/app/controllers/say_controller.rb,加入googby action.如:
class SayController < ApplicationController
 def hello
  @time = Time.now
 end
 def goodbye
 end
end
新建Googbye action的相应模板
/demo/app/views/say/goodbye.rhtml,内容为:
<html>
 <head>
  <title>See You Later!</title>
 </head>
 <body>
  <h1>Goodbye!</h1>
  <p> 
   It was nice having you here.
  </p>
  <p>
   Say <%= link_to "Hello", :action => "hello" %> again.
  </p>
 </body>
</html>

*<%= link_to "Hello", :action => "hello" %> 用来创建一个指向hello action的连接.
link_to是一个"方法",也可以将后面的参数加上括号.
第一个Hello是要显示的字符,后面一个hello是链接的目标action,因为在同一Controller之内,省略Controller参数.
8.在命令台按Ctrl+C终止WEBrick服务器.结束本章.

转载请注明: 转自船长日志, 本文链接地址: http://www.cslog.cn/Content/ruby_on_rails_hello_world/

此条目发表在 Ruby on Rails 分类目录。将固定链接加入收藏夹。

Ruby on Rails入门 –写第一个程序》有 19 条评论

  1. LZHD 说:

    DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

  2. 易飞 说:

    写得非常好,谢谢!

  3. rails 说:

    真的很好嗎?

  4. rubist@gmail.com 说:

    好个毛,这写得叫好?真的是给一个对rails什么都不懂的人看的入门?

  5. newruby 说:

    我怎么不能打开啊,有研究这个的找我

    qq 149023032

  6. newruby 说:

    ruby script/generate controller Say

    应该改为

    ruby script/generate scaffold Say

  7. lxy 说:

    写的好,一看就明白。

  8. 卯时下雨 说:

    回newruby,这里
    ruby script/generate controller Say没有错.

  9. 不懂啊 说:

    Ruby Console Window 这是什么?
    我的系统cmd 输入不行啊

  10. 卯时下雨 说:

    要先准备的,已经在文章前面加了说明了.

  11. 大括号 说:

    这个例子有那么点简单啊

  12. brant 说:

    Routing Error

    No route matches “/say/hello” with {:method=>:get}

    是不是要配置 route

  13. brant 说:

    上面的问题解决了,谢谢

    之前我是先写代码,然后生成,结果就出问题了。

  14. lgf 说:

    非常感谢!很小的例子对入门启发还是很大的。

  15. zgw06629@gmail.com 说:

    照您说的做了
    能打开http://localhost:3000/
    但打开
    http://localhost:3000/demo/say/hello 时提示
    We’re sorry, but something went wrong.

  16. lanvige 说:

    我的也出错
    打开 http://localhost:3000/demo/say/hello 时提示 We’re sorry, but something went wrong.

    版本:
    ruby 1.9.1
    rails : 2.3.3

  17. minh15158 说:

    还好啦,对应controller和相应的方法,就么问题,不会出现陆由错误

  18. ss 说:

    http://localhost:3000/demo/say/hello 时提示 We’re sorry, but something went wrong

    http://localhost:3000/say/hello 时 is all right.

发表评论