You need to enable JavaScript to run this app. Rails中使用FriendlyId实现根路径页面时如何调用命名路由?
优惠活动
大模型
产品
解决方案
定价
更多

Rails中使用FriendlyId实现根路径页面时如何调用命名路由?

正确实现方案

你只需要调整路由的别名配置,避免两组pages路由的命名冲突即可:

1. 修改路由配置(config/routes.rb)

将后台管理用的非show路由单独指定别名,避免占用page_*前缀的命名路由,再将前台show路由的别名设为page即可:

# 后台管理相关路由,生成的命名路由为 admin_pages_path、new_admin_page_path、edit_admin_page_path 等
resources :pages, except: [:show], as: :admin_pages

# 前台页面展示路由,挂载到站点根路径,生成的命名路由为 page_path
resources :pages, only: [:show], path: "/", as: :page

配置完成后,调用page_path(@page)会直接生成/about、/contact这类符合需求的路径,不会再携带/pages/前缀。

2. 可选:兼容旧路径避免404

如果担心用户或爬虫访问旧的/pages/xxx路径,可以新增301重定向规则,彻底解决重复内容问题:

# 放在上面两组路由的后面
get "/pages/:id", to: redirect("/%{id}", status: 301), constraints: { id: /[a-zA-Z0-9_-]+/ }

3. 验证配置

执行rails routes命令查看路由表,确认page路由的输出类似下方即可:

Prefix  Verb  URI Pattern          Controller#Action
page    GET   /:id(.:format)       pages#show

内容的提问来源于stack exchange,提问作者Lee McAlilly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 02:27:00