【发布时间】:2017-05-01 14:01:29
【问题描述】:
我正在将我的应用程序中的 /widgets 路由重命名为 /thingers,并且我希望能够通过一行将所有与 widget 相关的 URL 重定向到它们的 thinger 对应的 URL。
类似:
get '/widgets(*anything)', to: redirect('/thinger%{anything}'),
as: 'widgets_redirect'
^^^这不起作用:它将斜杠传递为%2F30%2F,并且根本不传递文件扩展名。
我唯一可行的解决方案是几行:
get '/widgets', to: redirect('/thingers'), as 'widgets_redirect'
get '/widgets/:id', to: redirect('/thingers/%{id}')
get '/widgets/:id/:action.:ext', to: redirect('/thingers/%{id}/%{action}.%{ext}')
get '/widgets/:id/:action', to: redirect('/thingers/%{id}/%{action}')
*edit:交换最后两行,否则没有文件扩展名的那一行会匹配并错误地处理带有扩展名的请求。
如何用一行代码涵盖所有这些情况?
【问题讨论】:
标签: ruby-on-rails redirect routing