现在我的用户配置文件 URL 是这样的:
http://example.com/users/joeschmoe
这指向 show
用户 Controller 中的方法。
理想情况下,我想做的是提供这样的用户个人资料 URL:
http://example.com/joeschmoe
那么,需要什么样的路由和 Controller 魔法才能实现这一目标?
最佳答案
我不同意 jcm 对此的看法。这根本不是一个糟糕的主意,并且被 Facebook 和 MySpace 两大社交网络用于生产。
匹配的路由 http://example.com/username
看起来像这样:
map.connect ':username', :controller => 'users', :action => 'show'
如果您想使用子域路由并将配置文件映射到类似
http://username.example.com/
的 URL ,我建议使用 SubdomainFu 插件,生成的路由如下所示:map.root :controller => 'users', :action => 'show' , :conditions => {:subdomain => /.+/}
这些广泛的、捕获所有路由应该在 routes.rb 中最后定义,以便它们具有最低优先级,并且更具体的路由将首先匹配。
我还建议在您的 User 模型中使用验证来消除用户选择与当前和 future 路线冲突的用户名的可能性:
class User < ActiveRecord::Base
validates_exclusion_of :username, :in => %w( messages posts blog forum admin profile )
…
end
关于ruby-on-rails - 如何路由用户配置文件 URL 以跳过 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1863292/