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

zllicho 2007-11-3 20:29

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

[font=Impact][size=5]you can say anything about this book..[/size][/font]

zllicho 2007-11-3 21:59

【读书笔记】1——2007-11-01 13:15:24

[color=Red]说明:我的开发环境是winxp,ruby版本1.8.6,rails 版本 1.2.5,数据库使用的是mysql- 5.0.22-win32[/color]

##这里必须要记住的是这三个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里贴个句子
<p>Time to say<%=link_to "Goodbye!", :action =>"goodbye" %></p>
<%= ...%>写ruby的地方。
这样就链接起两个页面

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

zllicho 2007-11-3 22:06

【读书笔记】2——2007-11-01 16:32:41

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

[color=Red]E:\rails\work>rails depot      #创建rails应用depot[/color]---

[color=Red]E:\rails\work\depot>mysqladmin -u root create depot_development     #创建数据库[/color]

[color=Red] E:\rails\work\depot>ruby script/generate model product     #创建product模型类[/color]出现:
  
这里着重注意两个文件:
迁移任务 : 001_create_products.rb              和     模型类 :[color=DarkSlateBlue]product[/color].rb


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



  打开db/migrate目录下的001_create_products.db,添加代码来创建数据库表!
  
   说明:up()方法用于实施迁移,定义数据库表的代码要写在这里,down()方法负责撤销up()方法的效果,当需要把数据库恢复到前一个版本时就会执行这个方法。  class Create

Products < ActiveRecord::Migration
def self.up
create_table :[color=Indigo]products[/color] do |t|
# t.column :name, :string

    [color=Red]  t.column :title,           :string
      t.column :description,     :text
      t.column :image_url,       :string[/color]
def self.down
drop_table :products
end
end


[color=Red]E:\rails\work\depot>rake db:migrate     #数据迁移[/color]


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

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

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

zllicho 2007-11-3 23:20

【读书笔记】3——2007-11-02 14:36:40

[color=Red]E:\rails\work\depot>ruby script/generate migration add_price     [/color]#新建迁移任务,添加price字段


class AddPrice < ActiveRecord::Migration

  def self.up

    [color=Red]add_column :products, :price, :decimal, :precision =>8, :scale=>2, :default=>0[/color]
  end

  def self.down
[color=Red]  remove_column :products, :price[/color]
  end
end

[color=Red]E:\rails\work\depot>rake db:migrate  [/color]   #迁移数据

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

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

  [color=Red]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[/color]
end








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

    。。。


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.用可控的方式来填充数据,使用迁移任务。

[color=Red]E:\rails\work\depot>ruby script/generate migration add_test_data [/color]



[color=Red]修改003_add_test_data.rb:
(拷贝)[/color]
[color=Red]顺便把图片和depot.css也拷贝到public\image和public\stylesheets目录下![/color]

[color=Red]E:\rails\work\depot>rake db:migrate          [/color]    #执行数据迁移
引用CSS样式!:

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

[color=Red]  <%= stylesheet_link_tag 'scaffold' ,'depot' %>[/color]         #添加depot.css[/color]

[color=Red]接下来就是修改/app/views/admin/list.rhtml了![/color]

拷贝一下

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

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

zllicho 2007-11-4 08:51

my sql命令

my sql下删除数据库的操作
c:>mysql -u root
mysql>drop database depot_development[color=Red] ;[/color]

drive2me 2007-11-4 09:17

先介绍一下你的Ruby开发平台吧。

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

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

drive2me 2007-11-4 09:20

[quote]原帖由 [i]zllicho[/i] 于 2007-11-3 21:59 发表 [url=http://ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=7091&ptid=1849][img]http://ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
##这里必须要记住的是这三个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 ... [/quote]

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

drive2me 2007-11-4 09:22

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

谢谢积极地行动。

drive2me 2007-11-4 09:38

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

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

admin 2007-11-4 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-3-4 22:13

怎么下载

瀛州司马 2008-3-15 21:02

一头雾水,不过继续加油中

wosohu 2008-3-16 23:22

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

shanghaichris 2008-3-17 23:16

我还是用TextMate写,感觉比较实在一点,IDE不是不好,只是不能领会其中的精妙

taotao6086 2008-4-10 18:28

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

ymzi 2008-4-25 22:31

怎么下载

巴黎草莓 2008-5-6 21:29

挖。。。楼主看来对这本书研究的很透了呀。。
我想问下这本书里的depot代码能完全实现吗?有没有发现什么bug呢??

请回复

luo528 2008-6-12 17:51

能实现

遇到问题得想办法:)

drive2me 2008-6-12 20:36

[quote]原帖由 [i]巴黎草莓[/i] 于 2008-5-6 21:29 发表 [url=http://www.ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=15198&ptid=1849][img]http://www.ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
挖。。。楼主看来对这本书研究的很透了呀。。
我想问下这本书里的depot代码能完全实现吗?有没有发现什么bug呢??

请回复 [/quote]

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

lwen2000 2008-7-31 15:11

我也看了那本书遇到很多问题,不过多琢磨琢磨就ok啦

sword721 2008-8-27 17:27

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