查看完整版本: [-- 【web开发敏捷之道--应用Rails进行web开发】第2版 --]

Ruby中文社区论坛 -> 书籍学习讨论 -> 【web开发敏捷之道--应用Rails进行web开发】第2版 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

zllicho 2007-11-03 20:29

【web开发敏捷之道--应用Rails进行web开发】第2版

you can say anything about this book..

zllicho 2007-11-03 21:59
说明:我的开发环境是winxp,ruby版本1.8.6,rails 版本 1.2.5,数据库使用的是mysql- 5.0.22-win32

##这里必须要记住的是这三个CMD命令
1.e:\rails\work>rails demo #create一个rails应用
2.e:\rails\work\demo>ruby script/server #启动这个rails应用
3.e:\rails\work\demo>ruby script/generate controller Say #新建一个控制器,这个控制器的脚本是用ruby写的,*,rb
在控制器的脚本中写一个action,(hello),理解一下controller和view的关系,controller r invokes view
然后在view里面就生成了一个hello.rhtml。在hello.rhtml写个跟html一样的语句,hello world ~ :)
-----
链接:
再创建goodbye的action,写点goodbye.rhml代码
在hello.rhtml里贴个句子

Time to say<%=link_to "Goodbye!", :action =>"goodbye" %>


<%= ...%>写ruby的地方。
这样就链接起两个页面

[ 本帖最后由 zllicho 于 2007-11-4 21:02 编辑 ]

zllicho 2007-11-03 22:06
配置mysql并且开始我们的depot之旅
1.安装mysql- 5.0.22-win32下载地址:
http://download.mysql.cn/download_file/zip/5.0/mysql-5.0.22-win32.zip
修改一下安装路径C:\MySQL,剩下的安装默认安装即可
配置环境变量,添加C:\MySQL\bin;

E:\rails\work>rails depot #创建rails应用depot---

E:\rails\work\depot>mysqladmin -u root create depot_development #创建数据库

E:\rails\work\depot>ruby script/generate model product #创建product模型类出现:

这里着重注意两个文件:
迁移任务 : 001_create_products.rb 和 模型类 :product.rb


说明一下:迁移任务的名字由几部分组成:描述自己的功能(create_products),加上序列号作为前缀(001),再加上扩展名(.rb)。



打开db/migrate目录下的001_create_products.db,添加代码来创建数据库表!

说明:up()方法用于实施迁移,定义数据库表的代码要写在这里,down()方法负责撤销up()方法的效果,当需要把数据库恢复到前一个版本时就会执行这个方法。 class Create

Products < ActiveRecord::Migration
def self.up
create_table :products do |t|
# t.column :name, :string

t.column :title, :string
t.column :description, :text
t.column :image_url, :string

def self.down
drop_table :products
end
end


E:\rails\work\depot>rake db:migrate #数据迁移


products表会被添加到database.yml文件的development
rake怎么知道哪些迁移任务实施过,哪些没有呢?运行迁移任务之后去看看数据库结构,你就会发现schema_info这么一张表,它的作用就是跟踪数据库的版本。

E:\rails\work\depot>ruby script/generate controller admin #创建控制器admin
------------------------------------
在admin这个控制器中加上脚手架(scaffold)
-------------------------------------
class AdminController < ApplicationController
scaffold :product
end
------------------------------------
scaffold声明告诉rails:请在运行时生成应用程序代码; :product模型来维护数据。
----------------------------------------
E:\rails\work\depot>ruby script/server #启动rails应用
http://localhost:3000/admin

[ 本帖最后由 zllicho 于 2007-11-4 21:07 编辑 ]

zllicho 2007-11-03 23:20
E:\rails\work\depot>ruby script/generate migration add_price #新建迁移任务,添加price字段


class AddPrice < ActiveRecord::Migration

def self.up

add_column :products, :price, :decimal, :precision =>8, :scale=>2, :default=>0
end

def self.down
remove_column :products, :price
end
end

E:\rails\work\depot>rake db:migrate #迁移数据

E:\rails\work\depot>ruby script/server #启动depot
---------------
Validate!模型层中放入验证逻辑

位于app/models/product.rb文件
---------
class Product < ActiveRecord::Base

validates_presence_of :title, :description, :image_URL

validates_numericality_of :price #验证price是否是数字

validates_uniqueness_of :title #验证title字段在表中是否唯一

validates_format_of :image_url, #验证图片格式是否正确

:with => %r{ \.(gif|jpg|png)$}i,

:message =>"must be a URL for a GIF, JPG or PNG image!"

protected #protected,是因为该方法必须在特定的模型上下文中调用,不能在外部随便调用。

def validate #validate()的方法,rails在保存product实例之前会自动调用这个方法,可以用它来检查字段的合法性

errors.add(:price, "should be at least 0.01") if price.nil? || price<0.01#先应该检查一下它是不是nil。如果是nil与0.01进行比较,就会发生一个异常。

end

end








E:\rails\work\depot>ruby script/generate scaffold product admin #生成静态的脚手架

。。。


overwrite app/controllers/admin_controller.rb? [Ynaqd] y

force app/controllers/admin_controller.rb

overwrite test/functional/admin_controller_test.rb? [Ynaqd] y

force test/functional/admin_controller_test.rb
。。。



App/views/admin/list.rhtml文件中rails视图生成了当前的货品列表页面。

测试数据:

1.用可控的方式来填充数据,使用迁移任务。

E:\rails\work\depot>ruby script/generate migration add_test_data



修改003_add_test_data.rb:
(拷贝)

顺便把图片和depot.css也拷贝到public\image和public\stylesheets目录下!

E:\rails\work\depot>rake db:migrate #执行数据迁移
引用CSS样式!:

在E:\rails\work\depot\app\views\layouts下有一个admin.rhtml的文件:

<%= stylesheet_link_tag 'scaffold' ,'depot' %> #添加depot.css


接下来就是修改/app/views/admin/list.rhtml了!

拷贝一下

现在在浏览器中输入http://localhost:3000/admin/list就可以看到

[ 本帖最后由 zllicho 于 2007-11-3 23:26 编辑 ]

zllicho 2007-11-04 08:51
my sql下删除数据库的操作
c:>mysql -u root
mysql>drop database depot_development ;

drive2me 2007-11-04 09:17
先介绍一下你的Ruby开发平台吧。

因为平台不一样,做法都不相同的。我用Netbeans来做,其中很多命令行的过程都不用了。直接就可以得到结果的。这就是NetBeans的优点。

我们希望你的心得和经验,和告诉我们每个例子的知识点。至于例子,大家手里都有书,可以自己做的。版主是要带领大家提高对所读书的理解和总结,并解答会员遇到的问题。

drive2me 2007-11-04 09:20
引用
原帖由 zllicho 于 2007-11-3 21:59 发表
##这里必须要记住的是这三个CMD命令
1.e:\rails\work>rails demo #create一个rails应用
2.e:\rails\work\demo>ruby script/server #启动这个rails应用
3.e:\rails\work\demo>ruby script/genera ...


controller和views有啥关系呀?Ruby是怎么把他们联系起来的呀?
这些是知识点吧。也是Ruby和Rails的妙处所在(他们的没有明显的借口调用)。
小伙子,加油呀!

drive2me 2007-11-04 09:22
还有,你三篇文章的字体都不一样,看上去很混乱哦,注意使用默认的字体和大家的风格一样吧。
要注意细节哦。呵呵!

谢谢积极地行动。

drive2me 2007-11-04 09:38
至于这本书,我不想评价了。当我在它的例子里碰到那个问题后,我就没有再看它了。哈哈,被我打入冷宫了!不过它也有点老,但可以理解,毕竟不是现在的书。

建议版主,把那个例子的做法贴上来,对新手会有很大帮助的。
谢谢!

skyover 2007-11-04 09:52
第二版的书还好啊。针对的是Ruby 1.8.4的,Rails 1.2的。不算旧的。

drive2me 2007-11-17 09:55
版主,你做得很好,呵呵。
继续加油,我们需要你!

hutuxian 2007-12-14 14:07
这本书不错的,跟着书上做完一遍例子,再看完整本书,好像能摸着点门道了,感觉挺好的。

ccfc1983 2007-12-27 20:38
我在跟着例子做的,直到126页(英文版的2ed)时,也就是加入ajax的时候,当我点(add to cart)按钮时页面不会刷新,
要手动刷新才能看到结果,不知道什么问题,疯掉了,有谁遇到过这一问题吗?

vexille 2008-03-04 22:13
怎么下载

瀛州司马 2008-03-15 21:02
一头雾水,不过继续加油中

wosohu 2008-03-16 23:22
我也在看这本书,我用的是netbeans6.01.感觉很不顺,问题很多,比如打开项目时,项目名称那儿十灰色的,文件夹中也没有文件;但用aptana就没有什么问题,是不是我的netbeans配置不对啊?你们怎么配置的?谢谢。

shanghaichris 2008-03-17 23:16
我还是用TextMate写,感觉比较实在一点,IDE不是不好,只是不能领会其中的精妙

taotao6086 2008-04-10 18:28
其实做书上的例子最好不要ror自带的ide,无论你是什么系统,这样可以让你更深入的了解ror的工作原理,我做的时候就是这么做的。感觉ror入门还是挺快的。

ymzi 2008-04-25 22:31
怎么下载

巴黎草莓 2008-05-06 21:29
挖。。。楼主看来对这本书研究的很透了呀。。
我想问下这本书里的depot代码能完全实现吗?有没有发现什么bug呢??

请回复

luo528 2008-06-12 17:51
遇到问题得想办法[s:2]

drive2me 2008-06-12 20:36
引用
原帖由 巴黎草莓 于 2008-5-6 21:29 发表
挖。。。楼主看来对这本书研究的很透了呀。。
我想问下这本书里的depot代码能完全实现吗?有没有发现什么bug呢??

请回复


在以前的Rails版本中都可以实现的。
在最近的Rails2.0以上的版本中,可能在要有一些调整,调整后就可以了。

lwen2000 2008-07-31 15:11
我也看了那本书遇到很多问题,不过多琢磨琢磨就ok啦

sword721 2008-08-27 17:27
[s:13] [s:13] [s:13] [s:13] [s:13] [s:13] [s:13]

daqqk 2009-02-13 13:29
[s:2] 想看看

longrm 2009-03-05 09:15
建议看全英的第三版

睡着了的麦穗 2009-03-25 14:07
怎么下载呢?

amberblade 2009-04-21 21:07
看了书上的例子,结果网站跑不起来,继续努力中

rubylucky 2009-05-30 07:53
是本好书,是我看过的RAILS最好的书。

lujie0601 2009-08-01 17:15
我要下载

roger_jin 2010-09-27 14:48
不错的资料,下载来看看!

roger_jin 2010-09-27 14:49
不错的资料,下载来看看![s:15]

lonnwen 2010-09-28 10:34
谢谢分享,下来观摩

lonnwen 2010-09-28 10:34
下来观摩

lonnwen 2010-09-28 10:35
下来观摩

znx5858 2010-09-28 14:28
a good book as what itle said

dianzi 2010-12-14 17:20
已经很旧了

alec163 2011-02-19 15:57
毕竟是学习,该尊重。

shmiya 2011-07-06 10:16
都已经有第四版了,可惜是英文的,看的累


查看完整版本: [-- 【web开发敏捷之道--应用Rails进行web开发】第2版 --] [-- top --]


Powered by phpwind v8.0 Code ©2003-2010 phpwind
Time 0.060086 second(s),query:2 Gzip enabled