首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

软件资讯设计 工具 系统 开发 安全 办公 陶吧 IT教育 Vista频道 | 下载中心酷我音乐盒 腾讯QQ
天极网 > 开发频道>进入Ruby on Rails世界

进入Ruby on Rails世界

2006-10-12 08:00作者:李宁出处:天极开发责任编辑:方舟

  四、使用ruby on rails实现一个在线日记程序

  为了更好地理解如何利用rails来开发web应用程序,在这一节中我们使用rails手工编写一个在线日记程序。这个程序以一天为单位记录信息。即每一天是一条记录。下面就详细描述这个程序的设计过程:

  第一步 初始化

rails diary
cd diary

  第二步 建立数据库

create database diary;

create table records (
`id` int(10) unsigned NOT NULL auto_increment,
`title` varchar(50) NOT NULL,
`content` mediumtext NOT NULL,
`date` char(10) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `Index_2` (`date`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

  第三步 编写数据表映射类

  在app\models中建立record.rb文件,在其中输入如下代码:

class Record < ActiveRecord::Base
establish_connection(
:adapter => "mysql",
:host => "localhost",
:username => "root",
:encoding => "gb2312",
:password => "password",
:database => "diary"
)
end

  注: :encoding => "gb2312" 是必须的,如果没有,汉字就无法保存在数据库中了。

  第四步 编写控制类

  在app\controllers中建立diary_controller.rb文件,在其中输入如下代码。

class DiaryController < ApplicationController
before_filter :configure_charsets
def configure_charsets
@response.headers["Content-Type"] = "text/html; charset=gb2312"
end
def index
end
def write
# 查找当天的记录,看看今天是否已经有日记了
@record = Record.find_by_date(Time.now.strftime("%Y-%m-%d"))
if @record == nil # 如果没有,增加一条记录
@record = Record.new
end
end
def create
@record = Record.find_by_date(Time.now.strftime("%Y-%m-%d"))
if @record == nil
@record = Record.new
@record.date = Time.now.strftime("%Y-%m-%d")
end
# 保存数据
if @record.update_attributes(params[:record])
@saved = true
else
@saved = false
end
end

def query

end
def result
# 得到提供的日期
@year =@request.params["record[date(1i)]"].to_s;
@month = sprintf("%02d", @request.params["record[date(2i)]"].to_s)
@day = sprintf("%02d", @request.params["record[date(3i)]"].to_s)
@query_date = @year + "-" + @month + "-" + @day
@record = Record.find_by_date(@query_date)
end
end

  以上代码有4点需要说明一下:

  1. 控制类必须从ApplicationController继承

  2. 控制类中每一个方法都可作为一个path,如write方法可以在IE中输入http://localhost:3000/diary/write。然后rails先执行这个方法,再调用下面将要讲的rhtml文件。

  3. configure_charsets方法是必须的。这个方法在向IE输出html代码之前调用。而其中的代码@response.headers["Content-Type"] = "text/html; charset=gb2312"设置了html所支持的编码类型。如果没有这条语句。必须得手工调整IE的编码设置才能正常显示汉字。

  4. index方法是默认路径。如果直接输入http://localhost:3000/diary,则执行index方法。

  第五步 编写rhtml文件

  也许你看到这个标题会感到奇怪,是不是写错了,是html吧?我可以肯定地告诉大家,就是rhtml文件。这个文件类型是rails定义的。它类似于jsp或aspx文件。是在后台执行的。在其中定义了很多类似于jsp的tag的东西。由于rhtml文件很多,在这里只给出write.rhtml的例子。

<h3>日记</h3>

<%= start_form_tag :action => 'create' %>
<%= render :partial => 'form' %>
<%= submit_tag "保存" %>
<%= end_form_tag %>

  其中submit_tab就是一个tag。Rails将submit_tag翻译成html代码传给IE或其它浏览器。其它的rhtml文件请参阅本文提供的源代码。这些文件都被建立在app\views\diary中。

  注:每一个作为path的方法必须对应一个rhtml文件,否则会报错。

  第六步 启动服务

ruby script/server

  在IE中输入http://localhost:3000/diary可看到如图4所示的界面。


图4 日记程序主界面

  通过点击"写日记"和"查询日记"链接,可以进行相应的操作。

  五、小结

  通过上节的介绍,我们已经了解了使用rails开发web程序的基本过程。使用rails开发web程序自动遵循MVC模式。分别将M、V、C所定义的代码放到了app\models、app\views和app\controllers三个目录中。然后rails会自动处理。这一点要比struts的一大堆设置方便得多。

  当然,rails的功能还远远不只这些。Rails最强大的功能就是活动记录。使用它可以很方便地映射数据表,而且还可以描述表之间的相互关系,以及其它一些有价值功能。除了这些外,rails还支持web services、actions mailer、security等。总之,如果能够灵活使用rails,就可以通过ruby快速开发出强大的web应用程序。

关注此文的读者还看过:

返回开发频道首页

共3页。 上一页123

软件频道最新更新

热点推荐

IT嘉年华

编辑推荐

软件下载

热门
推荐

网友关注

软件
资料
游戏

装机推荐

文章排行

本周
本月
最新更新
天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络