ruby-on-rails 将一个路径中的所有路由重定向到另一个路径,并保持URL的其余部分不变

9udxz4iz  于 2023-03-31  发布在  Ruby
关注(0)|答案(1)|浏览(108)

我想在Rails应用程序中重命名资源,并将所有旧路由重定向到新路由,以便向后兼容旧链接。例如,将“user”重命名为“member”,并将所有任意路由(如example.com/user/1/posts/all?order=date)重定向到example.com/member/1/posts/all?order=date
我如何设置routes.rb文件将所有路径重定向到另一个路由,但在我希望匹配的内容(包括url参数)之后维护所有路径参数?
例如,它也应该适用于example.com/user/no/real/path?foo=bar,它应该重定向到example.com/member/no/real/path?foo=bar
基本上我想重定向任何pathpath.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
  }
ldioqlga

ldioqlga1#

我希望这个解决方案会有所帮助。
get 'user/*path', to: redirect{| _params, request| request.url.sub('user', 'member')}

相关问题