我知道重定向特定路线:
put 'users/:user_id', to: redirect('/api/v1/users/:user_id')
如何将重定向应用于resources
生成的所有路由?寻找像
resources :users, to: redirect('/api/v1')
我可以使用匹配来实现变通方法,但它有点笨重:
match 'users/*path', to: redirect('/api/v1/users/%{path}'), via: [:GET, :POST, :PUT, :DELETE]
答案 0 :(得分:0)
我最近使用以下代码将 provider_apps
资源重命名为 apps
,该代码保留了查询参数,这与问题中提出的解决方案不同:
# routes.rb
get 'provider_apps/:slug', status: :moved_permanently, to: redirect { |path_params, request|
query_string = URI(request.url).query
"/apps/#{ path_params[:slug] }#{ "?#{ query_string }" if query_string }"
}
这是受the block example in Rails routing docs启发的。如果与目标路线相关,您还可以使用 request.query_parameters
获取查询参数的哈希值。
答案 1 :(得分:-1)
也许尝试这样的事情:
namespace :api, defaults: { format: :json } do
namespace :v1 do
resources :users
end
end
那会给你
api_v1_users GET /api/v1/users(.:format) api/v1/users#index {:format=>:json}
POST /api/v1/users(.:format) api/v1/users#create {:format=>:json}
new_api_v1_user GET /api/v1/users/new(.:format) api/v1/users#new {:format=>:json}
edit_api_v1_user GET /api/v1/users/:id/edit(.:format) api/v1/users#edit {:format=>:json}
api_v1_user GET /api/v1/users/:id(.:format) api/v1/users#show {:format=>:json}
PATCH /api/v1/users/:id(.:format) api/v1/users#update {:format=>:json}
PUT /api/v1/users/:id(.:format) api/v1/users#update {:format=>:json}
DELETE /api/v1/users/:id(.:format) api/v1/users#destroy {:format=>:json}
编辑:
namespace :api, path: nil, defaults: { format: :json } do
namespace :v1, path: nil do
resources :users
end
end
那会给你
api_v1_users GET /users(.:format) api/v1/users#index {:format=>:json}
POST /users(.:format) api/v1/users#create {:format=>:json}
new_api_v1_user GET /users/new(.:format) api/v1/users#new {:format=>:json}
edit_api_v1_user GET /users/:id/edit(.:format) api/v1/users#edit {:format=>:json}
api_v1_user GET /users/:id(.:format) api/v1/users#show {:format=>:json}
PATCH /users/:id(.:format) api/v1/users#update {:format=>:json}
PUT /users/:id(.:format) api/v1/users#update {:format=>:json}
DELETE /users/:id(.:format) api/v1/users#destroy {:format=>:json}