Agile+Web+Development+with+Rails中文版.pdf
翻译的不是很理想,如果你没耐性还是建议别下,如你有好的介绍,麻烦通知一下,谢谢
常用的数据库字段类型如下:
字段类型 中文说明 限制条件 其它说明
CHAR 固定长度字符串 最大长度2000 bytes
VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749
NCHAR 根据字符集而定的固定长度字符串 最大长度2000 bytes
NVARCHAR2 根据字符集而定的可变长度字符串 最大长度4000 bytes
DATE 日期(日-月-年) DD-MM-YY(HH-MI-SS)经过严格测试,无千虫问题
LONG 超长字符串 最大长度2G(231-1) 足够存储大部头著作
RAW 固定长度的二进制数据 最大长度2000 bytes 可存 ...
ActionView::Helpers::AssetTagHelper 和ActionView::Helpers::UrlHelper 模块包
含很多方法,它们可让你引用外部资源到当前“模板”中。当然,更通常使用的是link_to(),
它创建一个超链接给你的应用程序内的其它“动作”。
<%= link_to "Add Comment", :action => "add_comment" %>
传递给link_to()的第一个参数是用于显示这个链接的文本。下一个是指定链接目标的
哈希表。它们的格式与284 页中讨论的“控制器”的url_for()方法一样。第三个参数可以
用于设置被生成的 ...
- 16:24
- 浏览 (51)
- 评论 (0)
- 分类: Action View
先前我们说过可以在“模板”中放置代码。现在我们要纠正这句话。在“模板”内放置
少量代码还是可以让人接受的—这会让它们有更多动态性。但是,在“模板”内放置大量的
代码就是糟糕的风格。
这有两个主要原因。首先,在你的应用程序“视图”端放置大量的代码,很容易会让你
降低要求并开始添加应用级别的功能给“模板”内的代码。这是个糟糕的风格;你希望放置
应用程序代码在“控制器”和“模型”层中,以便在任何地方都可以使用它们。在你给应用
程序添加新的视图时你就会得到回报。
另一个原因是rhtml 是基本的HTML。当你编辑它时,你正在编辑一个HTML 文件。如果
你有用于创建你的层的个人工具,它们会希望与HTM ...
- 16:23
- 浏览 (65)
- 评论 (0)
- 分类: Action View
Builder “模板”
Builder 是个独立库,它可让你在代码中表达结构化文本(如XML)。一个Builder“模板”
(在扩展名.rxml 文件内)包含使用了Builder 库的Ruby 代码来生成XML。
这儿是个简单的Builder“模板”,它在XML 中输出一个有产品名字和价格的清单。
xml.div(:class => "productlist") do
xml.timestamp(Time.now)
@products.each do |product|
xml.product do
xml.productname(product.title)
xml.price(produ ...
- 16:22
- 浏览 (61)
- 评论 (0)
- 分类: Action View
当你写一“视图”时,你就正在写一个“模板”:有时候这将生成最终结果。要理解这
些“模板”是如何工作的,我们需要关心三件事:
1、“模板”在哪儿。
2、它们的运行环境,和
3、它们内部是什么。
“模板”在哪儿
render()方法期望在由全局的template_root 配置选项定义的目录下找到“模板”。缺
省,这被设置为当前应用程序的app/views 目录。在这个目录内,约定是给每个“控制器”
的“视图”一个分离的子目录。例如,我们的Depot 应用程序包含admin 和store“控制器”。结果,我们在app/views/admin 和app/views/store 目录下“模板”。
典型 ...
- 16:14
- 浏览 (36)
- 评论 (0)
- 分类: Action View
在课程的最后两章我们会提到很多列名字,它们对“活动记录”有重大意义。这儿是总
结。
1、created_at, created_on, updated_at, updated_on 用创建行的或最后更新行(_at
形式)或(_on 形式)的时间戳来自动更新。
2、lock_version Rails 将跟踪行版本号并完成乐观锁。如果表包含lock_version 的话。
3、type 由“单个表继承”使用来跟踪一个行的类型。
4、id 表主键列的缺省名字。
5、xxx_id 用xxx 的复数形式来引用表名字的外键的缺省名字。
6、xxx_count 为子表xxx 维护一个counter 缓存。 ...
- 16:09
- 浏览 (43)
- 评论 (0)
- 分类: Active Controller
可在“模型”类内直接指定回调处理器,你可以创建分离的处理器类,它封装所有回调
方法。这些处理器可以在多个“模型”间共享。一个处理器类是个简单的类,它定义回调方
法(before_save(),after_create(),等等)。在app/models 目录内为这些处理器类创建源
文件。
在“模型”对象内使用处理器,你创建这个处理器类的实例,并传递那个实例给各种回
调定义。几个例子会让这些更清楚些。
如果我们应用程序在多个地方使用信用卡,我们可能想在多个方法内共享我们的
normalize_credit_card_number()方法。要做到这点,我们要抽取方法到它自己的类中并在
我们希望它处 ...
- 16:04
- 浏览 (34)
- 评论 (0)
- 分类: Active Controller
before_create 和before_update 回调有种潜在的用法是timestamping 行。
class Order < ActiveRecord::Base
def before_create
self.order_created ||= Time.now
end
def before_update
self.order_modified = Time.now
end
end
“活动记录”可以不让你操心这些事。如果你的数据库表有个列名为created_at 或
created_on,它会自动地设置行创建时间的时间戳(timestamp)。同样地,一个列名字为
updat ...
- 15:57
- 浏览 (37)
- 评论 (0)
- 分类: Active Controller
“活动记录”控制“模型”对象的生命周期—它创建它们,监视它们的修改,保存,更
新和删除。使用“回调”,“活动记录”让我们的代码参与这种监视过程。我们可以在一个
对象的生命周期内让任何重大的事件来调用我们写的代码。在这些“回调”内,我们可以完
成复杂的确认,映射列的值并将它们传递到数据库外部,甚至可阻止某些操作的完成。
我们已经在“动作”内看到这个功能。当我们添加用户管理代码给我们的Depot 应用程
序时,我们想确保我们的管理员不能从数据库内删除魔法用户Dave,所以我们添加下列“回
调”给User 类。
class User < ActiveRecord::Base
before_d ...
- 15:46
- 浏览 (50)
- 评论 (0)
- 分类: Active Controller
- 浏览: 4406 次
- 性别:

- 来自: 杭州

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
Filter chain skipping -- ...
受用,考虑过这个问题没有?如何给过滤器传参数,或者在子类过滤器中调父类的方法,然 ...
-- by shaka -
rails2.0被废弃的用法
[img][/img][flash=200,200][/flash]
-- by xlth2006@sina.com






评论排行榜