我对rails非常陌生,所以请原谅我,如果我忽略了简单的东西或轨道方式。我的目标是完全替换
形式的URL /users/1
与
/username
用于所有目的。 (我认为公开展示ID脚手架就好像走出你的手臂骨头一样。)但实施似乎比我预期的要复杂一些。这似乎改变了rails索引和查找用户的整个方式,而不仅仅是替换查找方法。
虽然我已经使用to_param
文件中的user.rb
覆盖来实现此功能,但我读过这意味着我将indexing problems down使用params([:username])
的道路,我不确定它会如何影响我的
(a)新用户创建时的会话模型,以及
(b)user / show.html.erb文件中的@User用法。
所以,我要么咨询了以下几页(或问了问题):
我想从这个问题中理解的主要问题:
答案 0 :(得分:1)
您应该查看友好ID。做你想做的事非常容易。
https://github.com/norman/friendly_id
也有一个Railscast。
http://railscasts.com/episodes/314-pretty-urls-with-friendlyid?view=asciicast
答案 1 :(得分:0)
在解决这个问题几个星期之后,我会说截至2012年8月2日的最佳答案是,如果你这样做,你违反了许多铁轨惯例,撕裂了时间和空间本身的结构。 / p>
URL中丑陋的脚手架是rails用于RESTfulness的必要部分。
答案 2 :(得分:0)
如果您的用户名包含 @, - ,。等特殊字符,并且收到错误消息“No route matches”,则需要过滤其路由。见下文:
match "/user/:username" => 'users#show', :as => :profile, :username => /[\.a-zA-Z0-9_@-]+/