如果我有以下路线
resources :pages do
resources :sections
end
我得到的路线如下:
/pages = #index
/pages/:id = #show
/pages/:id/edit = #edit
...etc
如何进行制作,以便页面控制器的#show操作的网址看起来像' /:id',没有' / pages /'字首?我应该从资源中排除#show:page&分别为它创建一个get route +别名?或者有没有办法从资源内部执行此操作:页面块?谢谢你提前。
修改
将其更改为:
resources :pages, except: [:show] do
resources :sections
end
get '/:id', to: 'pages#show'
&安培;重新路由不存在:ids'现在到404,请告诉我是否有更好的解决方案。感谢。
答案 0 :(得分:2)
get '/:id', to: 'pages#show', as: 'page'
确保它位于routes.rb
文件的底部,否则会劫持对其他路径的请求。
这也为您提供了page_url
和page_path
辅助方法。但要使用它们,您必须从之前的路线中排除show
动作。
resources :pages, except: [:show]