??xml version="1.0" encoding="utf-8" standalone="yes"?>电影一区二区三区久久免费观看,久久久久国产精品一区三寸,日本一区二区三区视频视频 http://www.aygfsteel.com/vso/category/24553.htmlJAVA EEzh-cnThu, 02 Aug 2007 18:15:16 GMTThu, 02 Aug 2007 18:15:16 GMT60阅读Ruby+on+Rails实践q本书笔?vso20070731)http://www.aygfsteel.com/vso/archive/2007/08/01/133798.htmlvsovsoWed, 01 Aug 2007 06:24:00 GMThttp://www.aygfsteel.com/vso/archive/2007/08/01/133798.htmlhttp://www.aygfsteel.com/vso/comments/133798.htmlhttp://www.aygfsteel.com/vso/archive/2007/08/01/133798.html#Feedback0http://www.aygfsteel.com/vso/comments/commentRss/133798.htmlhttp://www.aygfsteel.com/vso/services/trackbacks/133798.htmlwindows版本ruby下蝲路径:
http://rubyinstaller.rubyforge.org/

gem 命o包含很多子命令和相应的选项Q比?
gem -h/--help – 昄 rubygem 的帮?br>gem -v/--version – 昄rubygem 的版本号
gem list –local – 用子命o list 列出本地安装?gems

安装rails:
gem install rails –remote
q条命o昑ּCq程服务器上安装 rails Q你也可以运?gem install rails 来安装, gem 会判断本地是否安装了rails Q由此来军_是否从远E安?rails.

一般来_安装 rails 需要的包有 rake (q是cM java ant ?build E序)Q?activerecord(rails 依赖?orm 工具Q也是 MVC中的Model 模块)Qactionpack (对应?controller 模块)?你可能会问那么相应的 view 模块怎么没有安装Q因?view 模块已经在默认的 ruby 安装中包含了Q就?eruby, 它的作用是完成Ҏ板文?.rhtml 的解释?/p>

创徏I的 rails |页应用E序骨架:
D:\railsdoc>rails mybook
控制台输?
create
create app/apis
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create components
create db
create doc
create lib
create log
create public/images
create public/javascripts
create public/stylesheets
create script
create test/fixtures
create test/functional
create test/mocks/development
create test/mocks/test
create test/unit
create vendor
create Rakefile
create README
create CHANGELOG
create app/controllers/application.rb
create app/helpers/application_helper.rb
create test/test_helper.rb
create config/database.yml
create config/routes.rb
create public/.htaccess
create config/environment.rb
create config/environments/production.rb
create config/environments/development.rb
create config/environments/test.rb
create script/console
create script/console_sandbox
create script/destroy
create script/generate
create script/server
create script/runner
create script/benchmarker
create script/profiler
create script/breakpointer
create public/dispatch.rb
create public/dispatch.cgi
create public/dispatch.fcgi
create public/404.html
create public/500.html
create public/index.html
create public/favicon.ico
create public/javascripts/prototype.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log

Rails 开发的方式是: ?rails 来生成默认的应用E序骨架Q你所做的工作是在默认目录结构中~辑文g增加应用E序逻辑可以了?/p>

启动webrick 服务?
D:\railsdoc\mybook>ruby script\server

q行E序:
打开览?Q输入网址http://127.0.0.1:3000/

Rails 开发工作的大部分集中在创徏和编?apps 目录下的文g

Apps 目录下包含四个主要目录,它们分别?
Q:Controllers 目录存放 rails 应用中相应的 controller c,controller cd理来自用L web h?br>Q:views 目录存放相应的模板文Ӟ模板文g填充数据后,转换?html 格式传递给用户的浏览器?br>Q:models目录存放数据模型c,模型cd装了数据库中的数据。很多框架在数据模型层都做的比较复杂Q用q?rails 后,你会发现它非常容易用?br>Q:helpers 目录存放了简?Controllers, models, views 使用的帮助类?/p>

q行 ruby script\generate controller MyTest
D:\railsdoc\mybook\app\controllers 目录中将生成一个包?MyTestController cd义骨架的名ؓ my_test_controller.rb 的文?/p>

q里需要做一些解释,在运?ruby script\generate controller MyTest 的时候, rails 做了一些默认的假设?MyTest 对应?controller 文g?my_test_controller.rb, 文g中控制器cd?MyTestControllerQ?url 映射?/My_Test/ .

在编辑完 controller 后,重新h面Q就可以使程序生效。对于编译型?java 语言来说Q不重新~译Q重新启动服务器是无法做到这点的

新徏数据库表 books
id int(11) 主键
title varchar(100)
description text
buydate date

告诉 rails 如何扑ֈ数据库信息,打开 D:\railsdoc\mybook\config 目录Q编?database.yml 配置文g

如何ruby对象保存?yaml 文g?
参考文: http://www.ruby-doc.org/core/classes/YAML.html
require ‘yaml’
tree = { :name => ‘ruby’,
:uses => [‘script’,’web’,’testing’,’etc’]
}
File.open(“tree.yaml”,”w”) {|f| YAML.dump(tree,f)}

如何?ruby E序中读?yaml 文g?br>require ‘yaml’
tree = YAML.load(File.open(“tree.yaml”)
tree[:uses][1]
输出l果Q?“web”

下面是个例子:
conf/config.yaml 文g内容如下Q?br>host: 127.0.0.1
prefs:
username: mulder
password: trustno1
filename: xfiles
我们可以在ruby 中这样用它
require ‘yaml’
config = YAML.load(File.open(“conf/config.yaml”))
config[“host”] -- 输出l果 “127.0.0.1”
config[“prefs”][“password”] -- 输出l果 “trustno1”

׃重新定义了数据库配置Q需要重新启?webrick 服务器才能让 rails 扑ֈ数据库配|信息?/p>

用rails生成ModelcBook的骨架文件book.rb,如下:
q行 ruby script\generate model book
book.rb:
class Book < ActiveRecord::Base

在这?Rails 数据库中的books 表映到 Book cR?q里 Rails 再次使用了习惯约定,那就是数据库表以复数形式命名Q而与之对应的 Model c,使用单数形式。这?rails 非常Q它理解英文的复数规?/p>

q行 ruby script\generate controller book 生成 controller 骨架文g book_controller.rb?/p>

class BookController < ApplicationController
scaffold :book
end

scaffold :book – q句是你惟一需要写的代码,它生成了数据库表对应?CRUD 操作Q而且令hȀ动的是它生成了对应的视图模板文g?/p>

我们重新~辑 book_controller.rb 文g
class BookController < ApplicationController
scaffold :book
def list
@books = Book.find_all
end
end

q里我们需要自己写一?list.rhtml
代码如下Q?br><html>
<head>
<title>All books</title>
</head>
<body>
<h1>Online Mybook - All books</h1>
<table border="1">
<tr>
<td width="80%"><p align="center"><i><b>book</b></i></td>
<td width="20%"><p align="center"><i><b>Date</b></i></td>
</tr>
<% @books.each do |book| %>
<tr>
<td><%= link_to book.title, :action => "show", :id => book.id %></td>
<td><%= book.buydate %></td>
</tr>
<% end %>
</table>
<p><%= link_to "Create new book", :action => "new" %></p>
</body>
</html>

创徏 categories 数据?br>id int(11)
name varchar(50)

ruby script\generate controller Category
category_controller.rb:
class CategoryController < ApplicationController
scaffold :category
end

ruby script\generate model Category

Z?books 数据表包含类别字D,我们需要新增加一?category_id字段Q字D定义ؓ int 型与 categories 表的 id 字段cd相同?/p>

book.rb 修改如下Q?br>class Book < ActiveRecord::Base
belongs_to :category
end
q行代码告诉 RailsQ?一本书属于一个类?br>
category.rb 修改如下Q?br>class Category < ActiveRecord::Base
has_many :books
end
q行代码告诉 RailsQ?一个类别可以包含很多本书?/p>

现在我们从新定义 edit 函数Q来覆盖它的 scalffold 版本?br>~辑 book_controller.rb 文g
class BookController < ApplicationController
scaffold :book
def list
@books = Book.find_all
end
def edit
@book = Book.find(@params["id"])
@categories = Category.find_all
end
end

新徏一?edit.rhtml:
<html>
<head>
<title>Edit book</title>
</head>
<body>
<h1>Edit book</h1>
<form action="../update" method="POST">
<input id="book_id" name="book[id]" size="30"
type="hidden" value="<%= @book.id %>" />
<p><b>Title</b><br>
<input id="book_title" name="book[title]" size="30"
type="text" value="<%= @book.title %>" />
</p>
<p><b>Description</b><br>
<input id="book_description" name="book[description]"
size="30" type="text"
value="<%= @book.description %>" />
</p>
<p><b>Category:</b><br>
<select name="book[category_id]">
<% @categories.each do |category| %>
<option value="<%= category.id %>"
<%= ' selected' if category.id == @book.category.id %>>
<%= category.name %>
</option>
<% end %>
</select></p>
<input type="submit" value="Update" />
</form>
<a href="/book/show/<%= @book.id %>">
Show
</a> |
<a href="/book/list">
Back
</a>
</body>
</html>

~辑list.rhtml
<html>
<head>
<title>All books</title>
</head>
<body>
<h1>Online Mybook - All books</h1>
<table border="1">
<tr>
<td width="80%"><p align="center"><i><b>书名</b></i></td>
<td width="20%"><p align="center"><i><b>cd</b></i></td>
<td width="20%"><p align="center"><i><b>购买日期</b></i></td>
</tr>
<% @books.each do |book| %>
<tr>
<td><%= link_to book.title, :action => "show", :id => book.id %></td>
<td><%= book.category.name %></td>
<td><%= book.buydate %></td>
</tr>
<% end %>
</table>
<p><%= link_to "Create new book", :action => "new" %></p>
</body>
</html>

rails的缺?
1:Rails 毕竟q没有大型项目的成功案例.
2:Rails 是最q刚刚出来的框架Q还不够成熟?br>3:ruby ~少lg的架构?br>我觉得未来应用程序框架应该具备两个特点,那就是:“易用?#8221;?#8220;lg”。从现在的情形看QRails 具备?#8220;易用?#8221;的特点,而大多数 Java 框架具备?#8220;lg”的特炏V我觉得Q?#8220;好的框架的复杂性应该被lg装?#8220;黑箱”中,?#8220;易用?#8221;应该体现在组件的使用?#8221;。所?Rails 的未来应该向lg上发展,?Java 框架应该l箋在组件易用性上多做文章Q两者的势是融合?/p>

vso 2007-08-01 14:24 发表评论
]]>
վ֩ģ壺 ͺ| | | | | | Ȫ| | ݳ| | 㶫ʡ| | | | ˮ| ¸| ʡ| | Ȫ| | | ǭ| ˹| | | ±| | ʯȪ| ɽ| ͨ| | ͤ| | | | ƽ| | ߰| Դ| | |