Ruby on rails 了解轨道布线,包括(=>;)和(:as)

Ruby on rails 了解轨道布线,包括(=>;)和(:as),ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,在阅读有关rails路由的文章时,我发现路由包含=>。但我不明白这意味着什么。我还发现了一些路由示例:as。如果有人能解释一下就好了。我读过rails指南,但仍然不太清楚 请解释一下这意味着什么 get 'customer_details' => "customers#details" 及 每次定义路线时,都必须为该路线定义控制器#操作: #config/routes.rb get :customer_details => "customers#details" get :c

在阅读有关rails路由的文章时,我发现路由包含=>。但我不明白这意味着什么。我还发现了一些路由示例:as。如果有人能解释一下就好了。我读过rails指南,但仍然不太清楚

请解释一下这意味着什么

 get 'customer_details' => "customers#details"

每次定义路线时,都必须为该路线定义
控制器#操作

#config/routes.rb
get :customer_details =>   "customers#details"
get :customer_details, to: "customers#details"
get :customer_details, controller: :customers, action: :details
路由模块在原生Ruby中提供URL重写。这是一种将传入请求重定向到控制器和操作的方法

以下符号是特殊的:

:controller maps to your controller name
:action     maps to an action with your controllers
其他名称仅映射到参数,如
:id

使用
=>
对于
来说只是一个简单的步骤:

当模式指向内部路由时,路由的
:action
:controller
应在选项或哈希速记中设置。示例:

match 'photos/:id'  => 'photos#show', via: :get
match 'photos/:id', to: 'photos#show', via: :get
match 'photos/:id', controller: 'photos', action: 'show', via: :get
简而言之,这是将所需的“
controller\action
”参数传递给Rails路由器的另一种方法

--

当然,这可以通过使用指令来否定,该指令隐式地设置
控制器
操作

#config/routes.rb
resources :customers, only: [], path: "" do
  get :customer_details, on: :collection #-> url.com/customer_details
end

路由中间件()获取入站URL路径,并将它们与您定义的路由进行匹配——将用户发送到相应的
控制器
/
操作

整个路由结构(即使使用
link_to
)取决于为路由设置
控制器
&
操作
;尤其是对一个

设置为:
可以显式定义路径的名称,例如:

#config/routes.rb
get "search/:query", to: "application#search", as: :app_search
。。。以上内容将创建帮助程序


更新

对于您的评论,您需要使用以下任一选项:

#config/routes.rb
get "customers/details", to: "customers#details" #-> url.com/customers/details

- or -

resources :customers do
  get :details, on: :collection #-> url.com/customers/details
end
如果您定义的是单一路由,那么只有Ruby能够在不进行任何插值的情况下解释该数据时,才可以使用
符号。例如,
get:details
可以被视为
get“details”
,但是
get“customers/details”
不能被视为符号。

每次定义一个时,您必须为该路线定义一个
控制器#动作

#config/routes.rb
get :customer_details =>   "customers#details"
get :customer_details, to: "customers#details"
get :customer_details, controller: :customers, action: :details
路由模块在原生Ruby中提供URL重写。这是一种将传入请求重定向到控制器和操作的方法

以下符号是特殊的:

:controller maps to your controller name
:action     maps to an action with your controllers
其他名称仅映射到参数,如
:id

使用
=>
对于
来说只是一个简单的步骤:

当模式指向内部路由时,路由的
:action
:controller
应在选项或哈希速记中设置。示例:

match 'photos/:id'  => 'photos#show', via: :get
match 'photos/:id', to: 'photos#show', via: :get
match 'photos/:id', controller: 'photos', action: 'show', via: :get
简而言之,这是将所需的“
controller\action
”参数传递给Rails路由器的另一种方法

--

当然,这可以通过使用指令来否定,该指令隐式地设置
控制器
操作

#config/routes.rb
resources :customers, only: [], path: "" do
  get :customer_details, on: :collection #-> url.com/customer_details
end

路由中间件()获取入站URL路径,并将它们与您定义的路由进行匹配——将用户发送到相应的
控制器
/
操作

整个路由结构(即使使用
link_to
)取决于为路由设置
控制器
&
操作
;尤其是对一个

设置为:
可以显式定义路径的名称,例如:

#config/routes.rb
get "search/:query", to: "application#search", as: :app_search
。。。以上内容将创建帮助程序


更新

对于您的评论,您需要使用以下任一选项:

#config/routes.rb
get "customers/details", to: "customers#details" #-> url.com/customers/details

- or -

resources :customers do
  get :details, on: :collection #-> url.com/customers/details
end

如果您定义的是单一路由,那么只有Ruby能够在不进行任何插值的情况下解释该数据时,才可以使用
符号。例如,
get:details
可以被视为
get“details”
,但是
get“customers/details”
不能被视为符号。

文档中解释了可能的重复。如果你读过这篇文章,但不理解它,那么再读一遍。文档中解释了这篇文章可能的重复。如果你读过但不明白,请再读一遍。因此,如果我想要我的url如www.example.com/customers/details”,那么路径应该是get:customers/details,to:“customers#details”“你在提供详细答案方面很有耐心:)谢谢你,伙计,你最近很火!除非有人问我这样的问题,否则我不会看Rails的源代码,所以这样做对我有很大的好处。所以,如果我想要像www.example.com/customers/details这样的url,那么路径应该是get:customers/details,到:“customers#details”“你在提供详细答案方面很有耐心:)谢谢你,伙计,你最近很火!除非有人这样问我,否则我不会看Rails的源代码,所以这样做对我有很大的好处