Rails高级路由知识:手动为路由创建名称
2017-03-13 20:43
302 查看
常规在routes.rb中设定的路由规则,rails都会为我们顺便创建一个名称,比如:
如上所列,用resources :risks创建的增删改查的全套路由,注意最前面的诸如edit_risk之类的名称,后面加上path就可以在view或controller里使用了:
很方便吧,你不用再费时写”/risks/#{id}”之类的东东了.
不过有些情况下,rails不会为个别方法创建名称,因为它不知道替你取什么名字好啊.比如我在risks中再添加一个新方法:
上生成的路径就没有名称,不信!?你可以自己敲rake routes看一下:
哝,post前面没有东东吧!?为了方便起见我们还是想自己手动设一个名称,OK!相当的简单,在原路径后面加上as参数即可:
再看生成的路由:
risks GET /risks(.:format) risks#index POST /risks(.:format) risks#create new_risk GET /risks/new(.:format) risks#new edit_risk GET /risks/:id/edit(.:format) risks#edit risk GET /risks/:id(.:format) risks#show PATCH /risks/:id(.:format) risks#update PUT /risks/:id(.:format) risks#update DELETE /risks/:id(.:format) risks#destroy
如上所列,用resources :risks创建的增删改查的全套路由,注意最前面的诸如edit_risk之类的名称,后面加上path就可以在view或controller里使用了:
link_to("编辑风险",edit_risk_path(@risk))
很方便吧,你不用再费时写”/risks/#{id}”之类的东东了.
不过有些情况下,rails不会为个别方法创建名称,因为它不知道替你取什么名字好啊.比如我在risks中再添加一个新方法:
resources :risks do collection do post "fake_delete/:id"=>"risks#fake_delete" end end
上生成的路径就没有名称,不信!?你可以自己敲rake routes看一下:
POST /risks/fake_delete/:id(.:format) risks#fake_delete
哝,post前面没有东东吧!?为了方便起见我们还是想自己手动设一个名称,OK!相当的简单,在原路径后面加上as参数即可:
post "fake_delete/:id"=>"risks#fake_delete",as:"fake_delete"
再看生成的路由:
fake_delete_risks POST /risks/fake_delete/:id(.:format) risks#fake_delete
相关文章推荐
- Rails高级路由知识:手动为路由创建名称
- Rails高级路由知识:筛选路由-路由冲突的优雅解决方案
- 创建自定义路由处理程序(Creating a Custom Route Handler) | 定制路由系统| 高级路由特性 |精通ASP-NET-MVC-5-弗瑞曼
- rails 手动创建controller和model 用和model名不同的数据表 会产生的问题
- 创建一个区域(Creating an Area) |使用区域 | 高级路由特性 | 精通ASP-NET-MVC-5-弗瑞曼
- Mysql DBA 高级运维学习笔记-索引知识及创建索引的多种方法实战
- Cisco路由技术基础知识详解
- 创建名称服务器 DNS 记录
- 网络基础知识讲座十六:因特网路由和对等互联
- 手动创建数据库方法
- 传统网络配置命令与ip高级路由命令学习示例
- 网络基础知识讲座十九:了解多播路由协议
- 新手入门 路由基础知识专题
- 在ASP.NET Atlas中调用Web Service——创建Mashup调用远端Web Service(基础知识以及简单示例)
- 网络基础知识讲座十二:路由协议基础知识
- 创建UNIX后门(初级篇,中级篇,高级篇)
- 靠知识赚钱只是较高级的体力劳动,靠智慧赚钱才能真正的富有。
- 使用反射实现根据名称动态创建窗体的几种方法。