路径变量如何在rails中成为参数



我问这个问题是因为我想我对rails参数是如何工作的没有很好的理解。

我想知道路径变量如何进入rails参数或映射到rails参数中的键和值。get 'x/y/:id'如果我点击url localhost:3000/x/y/2,这里的2将进入键id的参数:如params[id: 2]。它是怎么。谁能请帮助来理解它。

URLhttp://localhost:3000/x/y/2导致向Rails服务器上的端口3000发出请求,如下所示:

GET /x/y/2 http/1.1
Host: localhost

服务器接收请求并将其分解为各个部分。

  • 方案:http
  • 版本:1.1
  • 主持人:localhost
  • 端口:3000
  • 路径:/x/y/2
  • 方法:

Rails将路径与您的路由进行比较,并看到它与get '/x/y/:id'匹配。2设置为params[:id]。然后调用路由中指定的控制器方法。

了解更多信息,请阅读Rails路由从外部到内部和HTTP 1.1请求消息。

不知何故@schwern的答案是正确的,但实际情况是在幕后发生的Rails.application.routes。识别路径'/account/1',方法::get这会将您的路径转换为{:controller=>" book";:action=>"check";:id=>"1"}