default: { action: 'method' } 在 rails 路由中做什么?
What does default: { action: 'method' } do in rails routes?
我遇到了线:
resources :assesments, default: {action: :index }
在 rails 条路线内。
rake routes
对于 resources :assesments
打印:
Prefix Verb URI Pattern Controller#Action
assesments GET /assesments(.:format) assesments#index
POST /assesments(.:format) assesments#create
new_assesment GET /assesments/new(.:format) assesments#new
edit_assesment GET /assesments/:id/edit(.:format) assesments#edit
assesment GET /assesments/:id(.:format) assesments#show
PATCH /assesments/:id(.:format) assesments#update
PUT /assesments/:id(.:format) assesments#update
DELETE /assesments/:id(.:format) assesments#destroy
并且对于 default: { action: :index}
它打印:
Prefix Verb URI Pattern Controller#Action
assesments GET /assesments(.:format) assesments#index {:default=>{:action=>:index}}
POST /assesments(.:format) assesments#create {:default=>{:action=>:index}}
new_assesment GET /assesments/new(.:format) assesments#new {:default=>{:action=>:index}}
edit_assesment GET /assesments/:id/edit(.:format) assesments#edit {:default=>{:action=>:index}}
assesment GET /assesments/:id(.:format) assesments#show {:default=>{:action=>:index}}
PATCH /assesments/:id(.:format) assesments#update {:default=>{:action=>:index}}
PUT /assesments/:id(.:format) assesments#update {:default=>{:action=>:index}}
DELETE /assesments/:id(.:format) assesments#destroy {:default=>{:action=>:index}}
默认操作有什么变化?
编辑
我打错了。应该是:
resources :assesments, defaults: {action: :index }
和rake routes
现在看起来正常:
Prefix Verb URI Pattern Controller#Action
assesments GET /assesments(.:format) assesments#index
POST /assesments(.:format) assesments#create
new_assesment GET /assesments/new(.:format) assesments#new
edit_assesment GET /assesments/:id/edit(.:format) assesments#edit
assesment GET /assesments/:id(.:format) assesments#show
PATCH /assesments/:id(.:format) assesments#update
PUT /assesments/:id(.:format) assesments#update
DELETE /assesments/:id(.:format) assesments#destroy
TL;DR
如果我们有
resources :assesments, defaults: { format: 'jpg' }, default: { format: 'xml'}
我们访问 localhost/assessments
而 params
散列看起来像:
{
"format"=>"jpg", # FROM defaults: {}
"default"=> { "format"=>"xml" }, # FROM default: {}
"controller"=>"assesments", WE CAN NOT CHANGE IT. COMES FROM RAILS
"action"=>"index" # WE CAN NOT CHANGE IT. COMES FROM RAILS
}
--- 更多
defaults: { anything_key: 'any_value' }
会将散列内容添加到控制器内部可访问的 params
散列(但是您不能覆盖控制器提供的值 - 即::action
和 :controller
) .
添加 defaults: { action: :anything }
不会有任何效果,但添加 defaults: { format: 'jpg' }
会将 { format: 'jpg' }
添加到路由范围包装的所有控制器内的 params
哈希。
添加 default: { some_key: 'value' }
会将此散列 (default: { some_key: 'value' }
) 添加到由路由范围包装的控制器内的每个参数散列。
我遇到了线:
resources :assesments, default: {action: :index }
在 rails 条路线内。
rake routes
对于 resources :assesments
打印:
Prefix Verb URI Pattern Controller#Action
assesments GET /assesments(.:format) assesments#index
POST /assesments(.:format) assesments#create
new_assesment GET /assesments/new(.:format) assesments#new
edit_assesment GET /assesments/:id/edit(.:format) assesments#edit
assesment GET /assesments/:id(.:format) assesments#show
PATCH /assesments/:id(.:format) assesments#update
PUT /assesments/:id(.:format) assesments#update
DELETE /assesments/:id(.:format) assesments#destroy
并且对于 default: { action: :index}
它打印:
Prefix Verb URI Pattern Controller#Action
assesments GET /assesments(.:format) assesments#index {:default=>{:action=>:index}}
POST /assesments(.:format) assesments#create {:default=>{:action=>:index}}
new_assesment GET /assesments/new(.:format) assesments#new {:default=>{:action=>:index}}
edit_assesment GET /assesments/:id/edit(.:format) assesments#edit {:default=>{:action=>:index}}
assesment GET /assesments/:id(.:format) assesments#show {:default=>{:action=>:index}}
PATCH /assesments/:id(.:format) assesments#update {:default=>{:action=>:index}}
PUT /assesments/:id(.:format) assesments#update {:default=>{:action=>:index}}
DELETE /assesments/:id(.:format) assesments#destroy {:default=>{:action=>:index}}
默认操作有什么变化?
编辑
我打错了。应该是:
resources :assesments, defaults: {action: :index }
和rake routes
现在看起来正常:
Prefix Verb URI Pattern Controller#Action
assesments GET /assesments(.:format) assesments#index
POST /assesments(.:format) assesments#create
new_assesment GET /assesments/new(.:format) assesments#new
edit_assesment GET /assesments/:id/edit(.:format) assesments#edit
assesment GET /assesments/:id(.:format) assesments#show
PATCH /assesments/:id(.:format) assesments#update
PUT /assesments/:id(.:format) assesments#update
DELETE /assesments/:id(.:format) assesments#destroy
TL;DR
如果我们有
resources :assesments, defaults: { format: 'jpg' }, default: { format: 'xml'}
我们访问 localhost/assessments
而 params
散列看起来像:
{
"format"=>"jpg", # FROM defaults: {}
"default"=> { "format"=>"xml" }, # FROM default: {}
"controller"=>"assesments", WE CAN NOT CHANGE IT. COMES FROM RAILS
"action"=>"index" # WE CAN NOT CHANGE IT. COMES FROM RAILS
}
--- 更多
defaults: { anything_key: 'any_value' }
会将散列内容添加到控制器内部可访问的 params
散列(但是您不能覆盖控制器提供的值 - 即::action
和 :controller
) .
添加 defaults: { action: :anything }
不会有任何效果,但添加 defaults: { format: 'jpg' }
会将 { format: 'jpg' }
添加到路由范围包装的所有控制器内的 params
哈希。
添加 default: { some_key: 'value' }
会将此散列 (default: { some_key: 'value' }
) 添加到由路由范围包装的控制器内的每个参数散列。