打印

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

本主题由 zllicho 于 2007-11-3 20:32 设置高亮

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

you can say anything about this book..
美人卷株连,深坐蹙蛾眉,但见泪痕湿,不知心狠谁!

TOP

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

说明:我的开发环境是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里贴个句子
<p>Time to say<%=link_to "Goodbye!", :action =>"goodbye" %></p>
<%= ...%>写ruby的地方。
这样就链接起两个页面

[ 本帖最后由 zllicho 于 2007-11-4 21:02 编辑 ]
附件: 您所在的用户组无法下载或查看附件
美人卷株连,深坐蹙蛾眉,但见泪痕湿,不知心狠谁!

TOP

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

配置mysql并且开始我们的depot之旅
1.安装mysql- 5.0.22-win32下载地址:
http://download.mysql.cn/downloa ... ql-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 编辑 ]
美人卷株连,深坐蹙蛾眉,但见泪痕湿,不知心狠谁!

TOP

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

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 编辑 ]
附件: 您所在的用户组无法下载或查看附件
本帖最近评分记录
  • skyover R币 +3 well done. 2007-11-4 02:04
美人卷株连,深坐蹙蛾眉,但见泪痕湿,不知心狠谁!

TOP

my sql命令

my sql下删除数据库的操作
c:>mysql -u root
mysql>drop database depot_development ;
美人卷株连,深坐蹙蛾眉,但见泪痕湿,不知心狠谁!

TOP

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

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

我们希望你的心得和经验,和告诉我们每个例子的知识点。至于例子,大家手里都有书,可以自己做的。版主是要带领大家提高对所读书的理解和总结,并解答会员遇到的问题。
本帖最近评分记录
  • zllicho R币 +3 呵呵,谢谢小飞猪对我提出这么多的批评 ... 2007-11-4 20:47
Flying Piggy...! 
天地人合一!

TOP

引用:
原帖由 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的妙处所在(他们的没有明显的借口调用)。
小伙子,加油呀!
Flying Piggy...! 
天地人合一!

TOP

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

谢谢积极地行动。
Flying Piggy...! 
天地人合一!

TOP

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

建议版主,把那个例子的做法贴上来,对新手会有很大帮助的。
谢谢!
Flying Piggy...! 
天地人合一!

TOP

第二版的书还好啊。针对的是Ruby 1.8.4的,Rails 1.2的。不算旧的。
谢谢大家加入Ruby中文社区!
[寻找您身边的Rubyist.]

TOP

版主,你做得很好,呵呵。
继续加油,我们需要你!
Flying Piggy...! 
天地人合一!

TOP

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

TOP

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

TOP

怎么下载

TOP

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

TOP

2008-09-08 23:02 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.60