【发布时间】:2011-01-09 12:05:00
【问题描述】:
我已经看到并用谷歌搜索并发现了许多漂亮的 url 链接。
但它们看起来都像http://example.com/users/username
我希望它像 github 风格 http://example.com/username
我可以遵循的任何指示??
【问题讨论】:
标签: ruby-on-rails friendly-url
我已经看到并用谷歌搜索并发现了许多漂亮的 url 链接。
但它们看起来都像http://example.com/users/username
我希望它像 github 风格 http://example.com/username
我可以遵循的任何指示??
【问题讨论】:
标签: ruby-on-rails friendly-url
你不是只需要在路由中删除users/吗?
map.connect '/:username',... 而不是map.connect '/users/:username',...
【讨论】:
一个非常基本的例子可能是这样的:
在config/routes.rb:
map.username '/:username', :controller => :users, :action => :show
在UsersController:
def show
@name = Name.find_by_name(params[:username]) || Name.find(params[:id])
end
然后您可以使用username_path(:username => user.name) 生成链接。
【讨论】:
http://example.com/users/username 有什么问题?使用http://example.com/username 的问题是有人可以很容易地注册用户名admin 或faq,这可能与您的其他路由冲突。您需要保留一份禁止使用的用户名列表,还需要在创建新路由之前检查是否存在具有给定名称的用户,因为这可能与现有用户冲突。
您始终可以将其缩短为:http://example.com/u/username。
但是,如果您必须这样做,您可以按照其他人的建议使用 map.connect,但您绝对应该考虑利弊以及它是否会增加任何重要价值。
【讨论】: