读《应用rails进行敏捷web开发》第2版-12

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方法):

 

newGET
createPOST
editGET
updatePUT
indexGET
showGET
deleteDELETE

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值