现在我的用户个人资料 URL 如下所示:
http://example.com/users/joeschmoe http://example.com/users/joeschmoe
这表明show
用户控制器中的方法。
我理想的做法是提供这样的用户个人资料 URL:
http://example.com/joeschmoe http://example.com/joeschmoe
那么,需要什么样的路线和控制器魔法才能实现这一目标呢?
我不同意jcm对此的说法。这根本不是一个糟糕的想法,两个最大的社交网络 Facebook 和 MySpace 都在生产中使用了它。
匹配的路线http://example.com/username
看起来像这样:
map.connect ':username', :controller => 'users', :action => 'show'
如果您想进入子域路由并将配置文件映射到类似的 URLhttp://username.example.com/
,我建议使用 SubdomainFu 插件,生成的路线如下所示:
map.root :controller => 'users', :action => 'show' , :conditions => {:subdomain => /.+/}
这些广泛的、包罗万象的路由应该在routes.rb中最后定义,以便它们具有最低的优先级,并且更具体的路由将首先匹配。
我还建议在您的用户模型中使用验证,以消除用户选择与当前和未来路由冲突的用户名的可能性:
class User < ActiveRecord::Base
validates_exclusion_of :username, :in => %w( messages posts blog forum admin profile )
…
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)