路由重命名和重定向生成错误的URL帮助程序

时间:2016-11-21 21:20:15

标签: ruby-on-rails routing routes

我正在尝试将我的应用中/felines的路由更改为/cats,我希望尽可能少地对我的应用代码进行更改(即不重命名模型,控制器或对URL助手的引用。)

routes.rb我在做

get '/felines', to: redirect('/cats')
resources :cats, as: 'felines'
  • FelinesController#index提供/cats - 好
  • 并将/felines重定向到/cats - 也很好

但是在调试时,我发现了

  • new_feline_path/cats/new - 好
  • felines_path/felines - BAD!

如果我在felines_path中切换两行的顺序,我还发现/cats将成为routes.rb

为什么这些行的顺序会影响felines_path的价值?

有没有更好的方法可以实现重新路由和重定向?

1 个答案:

答案 0 :(得分:1)

get '/felines', to: redirect('/cats')

rails为上述路由生成felines_path路由助手,由于优先级是从上到下,felines_path将指向/ felines。这就是为什么在您更改订单时它指向/cats的原因。

为自定义路线指定其他名称,使其不会覆盖您的felines路径

get '/felines', to: redirect('/cats'), as: 'felines_redirect'  #or someother name like that