p395
查了一下去年11月参加的信息系统管理工程师考试,没过。
基础知识:及格分-45,我是48,这部分过了
应用常识:及格分-35,我是39。
决定继续报5月份的考试,查了一下还没开始报名,先在google日历上设置每两周提醒一次,查查什么时候开始报名吧。免得又象去年一样,想起来的时候是截止报名的第2天!!
over,继续看书
过程:url被web服务器获取后,开始匹配上面规则,然后匹配成功后,开始给变量赋值。哪些变量?
:controller
:action
:id
它们会全部放进param这个数组中
上面是:name形式的规则定义
第二条:*name形式的,这种形式会将url剩下的部分全部付给变量name,name指向一个数组,包含url剩下的部分(应该是url中每个/分开的元素),因此*name应该只出现在模式定义中的最后部分
rails的route默认了:action=>"index",:id=>nil
所以/store会被路由,
所以/store/new也会被路由
所以/store/show/1也会被路由
其实rails的route默认解释了两个规则
1.如果有默认值,那么url可以不包含它,比如/store的路由
2.如果默认值为nil,并且没有出现在url中,那么它不会放入param参数,比如/store/new的路由(其中没有:id)
根据不同的http方法,同样的url被路由到不同的控制器,使用conditions参数
这个可以匹配下列url
store/2009
store/2009/1
store/2009/1/21
也就是说由于定义中:month=>nil,:day=>nil,所以这两个可以不出现
匹配的顺序
按照routes.rb中声明的顺序,匹配则后面的不再匹配。
生成url
url_for :controller=>"store",:action="show",:id=>1
url_for参数均有默认值,比如,如果
url_for :action="show",:id=>1
那么:controller将会被赋值为当前当前控制器(url_for方法只能在控制器和视图代码中使用,而视图本身也有相应控制器)
具名路由
把map.connect改成map.yourname,就变成具名路由,方便理解路由配置文件,同时最重要的是可以用具名路由来生成url
比如有map.index,那么可以在应用中加上后缀"_url",index_url 就可以如同url_for一样使用,比如
date_url(:year=>2005,:month=>12)
如同具名路由的"_url"后缀,"_path"仅返回相对路径,不包含协议、主机名、端口号的部分,即去除了类似http://xxx.com:9080的部分
终于要到促使我看这本书的动力所在了,restful的路由定义,之前就是由于看不懂,才开始找资料的,嘿嘿。要好好看看。
p407 基于资源的路由
这一行已经提供了7个路由和4个url辅助方法。
7个方法就是传统的CRUD。不过对于更新数据的两个:C和U,又分出了两个,分别是新增前的new,和更新前的edit,这就6个了,再把R分为了看一个和看多个,分别是show和index,一共7个(后面是http方法):
new | GET |
create | POST |
edit | GET |
update | PUT |
index | GET |
show | GET |
delete | DELETE |