在我的路线文件中,我有一些如下路线。这意味着什么?我看了rails路线指南,但我找不到=>的解释和foo:'bar'
get '/clients/:status' => 'clients#index', foo: 'bar'
请解释这意味着什么?
答案 0 :(得分:4)
这意味着对于模式/clients/:status
的URI的HTTP GET请求,其中:status
是变量参数。
=> clients#index
代表Controller#action
,controller
为clients
,ClientsController
,action
为index
。
您拥有foo: 'bar'
的第三个选项基本上是路线定义的其他选项。其他选项,例如as
,constraints
等。
例如as
(允许您为路线命名):
get '/clients/:status' => 'clients#index', as: :client_status
此处as: :client_status
会替换您的foo: 'bar'
。
答案 1 :(得分:3)
首先,我假设您的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'
为任意字符串的请求index
告诉Rails它应该调用ClientsController的:foo => 'bar'
方法中的代码。params
可能在你想要做的事情上更有意义(如vee提到的那样),但在这种情况下,(我认为)它将被添加为s
散列中的值{可以在ClientsController {{1}} index`方法中访问。有关更多信息,请查看路由上的Rails指南。它是Rails文档中最好的部分之一,恕我直言: