You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby on Rails中URL下划线改连字符的路由命名问题咨询

解决Ruby on Rails路由别名报错问题

你要优化SEO将URL从to_do改为to-do的思路是对的,但:as选项的别名不能用连字符,且要避开Ruby关键字,正确的修改方式如下:

正确的路由代码

保持外部URL为to-do,将路由别名改为合法的Ruby符号(用下划线代替连字符):

get 'to-do' => 'current_to_do_items#landing', :as => :to_do

或者使用Rails推荐的哈希语法:

get 'to-do', to: 'current_to_do_items#landing', as: :to_do

关键说明

  • 外部访问的URL依然是/to-do,满足SEO对连字符的需求
  • 路由别名:to_do是合法的Ruby符号,不会触发关键字报错,你在代码中调用to_do_path或to_do_url时,会正确生成/to-do的URL
  • 如果想要更简洁的别名,也可以用:todo(只要内部代码统一使用即可):
    get 'to-do' => 'current_to_do_items#landing', :as => :todo
    
    之后调用todo_path就能生成目标URL

Ruby符号的命名规则是只能包含字母、数字和下划线,且不能以数字开头,同时要避开do这类关键字,所以用下划线替代连字符是标准解决方案,路由别名仅作用于内部代码调用,不影响外部URL结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:52:44