我想在Rails应用程序中重命名资源,并将所有旧路由重定向到新路由,以便与旧链接向后兼容。例如,将“user”重命名为“member”,并将所有任意路由(例如example.com/user/1/posts/all?order=date
重定向到example.com/member/1/posts/all?order=date
如何设置routes.rb
文件以将所有路径重定向到另一条路径,但是在我想要匹配之后保持所有路径参数(包括url params)?
它应该也适用于example.com/user/no/real/path?foo=bar
,它应该重定向到example.com/member/no/real/path?foo=bar
基本上我想将path
重定向到path.sub(/\A\/user/, '/member')
我检查了this answer,但它似乎不适用于参数。
这是我到目前为止的解决方案,非常糟糕:
get 'user/*path', to: redirect{|params, request|
path = params[:path].sub('/user', '/member')
params = request.params.except(:path).map{|k,v| "#{k}=#{v}"}.join('&')
if params.presence
"#{path}?#{params}"
else
path
end
}