我已经通过Vanity
gem设置路径文件以包含用户名。
但是,现在我只能做一个特定的网址 - 即用户名。
因此gem生成的路径如下所示:
controller :vanities do
match ':vname' => :show, :via => :get, :constraints => {:vname => /[A-Za-z0-9\-\+]+/}
end
所以说有人使用用户名test
注册,系统会根据用户名自动创建vname
。但如果他们前往mydomain.com/@test
会发生什么,我希望他们最终走在同一条路线上,就好像他们只是前往/test
一样。
我该怎么做?
答案 0 :(得分:1)
您可以在虚名称的开头使用可选的@:
controller :vanities do
match ':vname' => :show, :via => :get, :constraints => {:vname => /@?[A-Za-z0-9\-\+]+/}
end
然后您必须在控制器操作中删除@,如下所示:
params[:vname].gsub!(/\A@/, '')
<强>更新强>
如果您希望在所有控制器中完成替换,可以在before_filter
的{{1}}中执行此操作:
ApplicationController
答案 1 :(得分:0)
@
符号是URL中的保留字符,在特定上下文%40
之外使用时,必须进行百分比编码(@
)。网址mydomain/@test
无效。