【问题标题】:How to setup github.com like username url?如何设置 github.com 之类的用户名 url?
【发布时间】:2011-01-09 12:05:00
【问题描述】:

我已经看到并用谷歌搜索并发现了许多漂亮的 url 链接。

但它们看起来都像http://example.com/users/username

我希望它像 github 风格 http://example.com/username

我可以遵循的任何指示??

【问题讨论】:

    标签: ruby-on-rails friendly-url


    【解决方案1】:

    你不是只需要在路由中删除users/吗?

    map.connect '/:username',... 而不是map.connect '/users/:username',...

    【讨论】:

      【解决方案2】:

      一个非常基本的例子可能是这样的:

      • 声明一条优先级最低的路由,指向用户控制器的显示操作
      • 修改显示操作以根据用户名查找记录

      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) 生成链接。

      【讨论】:

        【解决方案3】:

        http://example.com/users/username 有什么问题?使用http://example.com/username 的问题是有人可以很容易地注册用户名adminfaq,这可能与您的其他路由冲突。您需要保留一份禁止使用的用户名列表,还需要在创建新路由之前检查是否存在具有给定名称的用户,因为这可能与现有用户冲突。

        您始终可以将其缩短为:http://example.com/u/username

        但是,如果您必须这样做,您可以按照其他人的建议使用 map.connect,但您绝对应该考虑利弊以及它是否会增加任何重要价值。

        【讨论】:

        • 公平地说,您应该始终拥有用户名黑名单,因为名为 admin 或 webmaster 的用户无论如何都是坏人,更不用说与路由冲突了。
        • 是的,但我在这里找到了这个解决方案 henrik.nyh.se/2008/10/… 我想我会选择这个解决方案。
        • 我很高兴你找到了适合你的东西。确保在引入新路线时进行反向检查。
        猜你喜欢
        • 2017-03-09
        • 2022-11-14
        • 2013-04-07
        • 2012-07-05
        • 2017-12-27
        • 2012-03-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多