在我的路由文件中,我有一些如下所示的路由。这意味着什么?我查看了铁路路线指南,但我找不到 => 和 foo 的解释:"酒吧">
get '/clients/:status' => 'clients#index', foo: 'bar'
请解释一下这意味着什么?
这意味着对于对模式/clients/:status
URI 的 HTTP GET 请求,其中:status
是变量参数。
=> clients#index
代表controller
clients
的Controller#action
,即ClientsController
和action
是index
.
您foo: 'bar'
的第三个选项基本上是路由定义的其他选项。 其他选项,如as
、constraints
等。
例如,使用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