Rails中如何修改resources路由URL且保留原URL辅助方法?
解决方案:用
path选项实现URL变更但保留原路由辅助方法 你想要的效果其实Rails路由本身就支持,只需要给resources :posts加上path参数即可,之前的写法没找对关键点~
正确的路由代码
resources :posts, path: 'articles'
效果说明
这样配置后:
- 生成的URL路径会变成
/articles、/articles/:id、/articles/:id/edit等,完全符合你要替换成articles的需求 - 所有原有的
posts_*系列URL辅助方法都会保留,调用posts_url会输出http://your-domain/articles,edit_post_path(1)会输出/articles/1/edit,和你期望的一致
额外补充(如果需要更换控制器)
如果你不仅要改URL,还想让路由指向ArticlesController而不是默认的PostsController,可以再加上controller参数:
resources :posts, path: 'articles', controller: 'articles'
这样路由会把请求转发给ArticlesController的对应动作,同时依然保留posts_*的辅助方法。
你可以运行rails routes命令来验证路由配置,会看到路由的Path列是/articles开头,而Name列依然是posts、post等,这就对应了你要的辅助方法名称。
内容的提问来源于stack exchange,提问作者CafeHey
相关产品推荐
相关产品推荐

