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/

相关日志:

  1. Ruby on Rails实战–创建一个网上商店D收银台
  2. Ruby on Rails 数据库Migration操作语句实例
  3. Ruby on Rails页面缓存
  4. learning ruby 6, about methods
  5. REST and ActiveResource
此条目发表在 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.

发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>