weixin_42352361
2009-12-20 17:46
浏览 383
已采纳

Rails中的路由功能是如何对应的?

我才开始接触ROR,我是参照agile web development with rails这本书学习,按照上面的例子走,但是我发现我请求的地址似乎和config/routes.rb里面设定并不一样,比如说routes中是这样设置的:
[code="ruby"]
map.connect ':controller/:action/:id'
[/code]
可是我在浏览器中编辑的时候显示的是:http://localhost:3000/products/2/edit

2是id编号,Edit是action名,这样不是和设置不一致么,为什么照样可以运行?
而显示页面的地址是:http://localhost:3000/products/2, 默认不是找index么?怎么controller后面直接跟id了呢?

这个机制到底是什么样的呢? 还请知道的帮我解惑,先谢过了.

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • sunchi1986 2009-12-21 14:52
    已采纳

    在客户端 工程文件夹下 输入 rake routes
    看看路由的规则,识别是从上向下的, 如果需要更改,在config/route.rb文件里加入新规则,每个控制器的 map.resources 之前加

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • iteye_9989 2009-12-20 19:48

    俺也初学,是有点迷惑
    感觉生成index,new,create等只能当后台程序用

    评论
    解决 无用
    打赏 举报
  • iteye_9989 2009-12-21 20:22

    找到一篇很精典的文章,终于明白了
    REST 风格的URL是为了定位一个资源,而并不是调用一个action. 在REST中,URL经常以这种方式出现:先是controller的名称,然后是资源的id。请求的操作隐藏在URL里,并且通过 http 协议来表示(get, post, put, delete 四个动作)。

    评论
    解决 无用
    打赏 举报
  • wangxin0072000 2009-12-26 01:48

    看看routes里是不是设置了named route,
    like this:
    map.product 'product/:id/:action/',:controller=>"product"

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题