在阅读rails路由时,我发现包含=>的路由。但我并不知道这意味着什么。我还发现了一些路由示例:as。如果有人解释一下它会很好。我已阅读过rails指南,但我仍然不太清楚它们。
请解释这意味着什么
get 'customer_details' => "customers#details"
和
get 'customer_details' => "customers#details", :as => :customerdetails
答案 0 :(得分:4)
每次定义route时,都必须为该路线定义controller#action
:
#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路由器的另一种方法。
-
当然,使用resources
指令可以取消这一点,该指令设置了controller
&隐含地actions
:
#config/routes.rb
resources :customers, only: [], path: "" do
get :customer_details, on: :collection #-> url.com/customer_details
end
路由中间件(ActionDispatch::Routing
)接收入站网址路径,并根据您定义的路由进行匹配 - 将用户发送到相应的controller
/ action
。
整个路由结构(即使您使用link_to
)取决于controller
& action
设置路线;特别是path helper。
设置as:
使您能够明确定义路径的名称,例如:
#config/routes.rb
get "search/:query", to: "application#search", as: :app_search
...以上将创建帮助器<%= 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可以在没有任何插值的情况下解释该数据时才使用symbols
。例如,get :details
可以视为get "details"
,但get "customers/details"
不能视为符号。