轨道布线的工作原理



在我的路由文件中,我有一些如下所示的路由。这意味着什么?我查看了铁路路线指南,但我找不到 => 和 foo 的解释:"酒吧">

get '/clients/:status' => 'clients#index', foo: 'bar'

请解释一下这意味着什么?

这意味着对于对模式/clients/:statusURI 的 HTTP GET 请求,其中:status是变量参数。

=> clients#index代表controllerclientsController#action,即ClientsControlleractionindex.

foo: 'bar'的第三个选项基本上是路由定义的其他选项。 其他选项,如asconstraints等。

例如,使用as(可让您命名路由):

get '/clients/:status' => 'clients#index', as: :client_status

在这里as: :client_status会取代你的foo: 'bar'.

首先,我假设您的 Web 服务器在主机和端口上运行localhost:3000.但这部分并不重要 - 无论向Rails发出请求的主机和端口是什么,都是一样的。

get '/clients/:status' => 'clients#index', foo: 'bar'

如果你不熟悉 Ruby 语法糖,这相当于:

get({'/clients/:status' => 'clients#index', :foo => 'bar'})

从这里开始,让我一点一点地分解:

  • get意味着路由仅适用于"GET"HTTP 请求。
  • '/clients/:status'表示将此路由应用于http://localhost:3000/clients/:status请求,其中:status是任何字符串
  • => 'clients#index'告诉Rails,它应该调用ClientsController的index方法中的代码。
  • :foo => 'bar'在你想做的任何事情中可能更有意义(如 vee 所述),但在这种情况下,(我认为)它将被添加为可在 ClientControllers索引方法中访问的params哈希中的值。

有关更多信息,请查看有关路由的 Rails 指南。恕我直言,这是最好的 Rails 文档之一:

http://guides.rubyonrails.org/routing.html

最新更新