ruby-on-rails - 如何路由用户配置文件 URL 以跳过 Controller ?

标签 ruby-on-rails routes

现在我的用户配置文件 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/

相关文章:

ruby-on-rails - Rails Active Record - 如何对用户/配置文件场景进行建模

ruby-on-rails - current_user 的 Rails 关联

node.js - express.js 路由

go - 仅使用stdlib在Golang中进行路由

java - 防止在反向路由中转义斜线

ruby-on-rails - Rubymine 弃用警告

ruby-on-rails - 运行Rails控制台时出现加载错误

ruby-on-rails - 如何在不执行/bin/bash --login 的情况下让 Bundler gem 工作

ruby-on-rails - Rails 获取 root_url 错误

javascript - Laravel 5.2 - 使用 jquery 自动完成下拉菜单