我正在尝试将我的应用中/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
的价值?
有没有更好的方法可以实现重新路由和重定向?
答案 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