【问题标题】:Things to change when using username slug/short URL in rails在 Rails 中使用用户名 slug/短 URL 时要更改的内容
【发布时间】:2012-07-18 18:30:00
【问题描述】:

我对 Rails 很陌生,所以如果我忽略了简单的事情或 Rails 方式,请原谅我。我的目标是完全替换表单的 URL

/users/1

/username

用于所有目的。 (我认为公开暴露 ID 的脚手架就像在你的手臂上伸出一根骨头四处走动。)但实施似乎比我预期的要复杂一些。这似乎改变了 rails 索引和查找用户的整个方式,而不仅仅是替换查找方法。

虽然我已经在我的user.rb 文件中使用to_param 覆盖来实现此功能,但我已经阅读这意味着我将拥有indexing problems down 使用@ 时的道路987654335@,我不确定它会如何影响我的

(a) 新用户创建时的会话模型,以及

(b) @User 在 user/show.html.erb 文件中的使用。

所以,我已经查阅了以下页面(或提出了问题):

我想从这个问题中理解的主要问题:

  1. 过渡到此功能会丢失哪些功能?也就是说,如果我追求这个替代品,我必须解决和重写哪些目前在 Rails 中“正常工作”的东西?
  2. 作为一种实践,用friendly_id 替换它是否更好?我在这里担心的是,在我的数据库中创建一个与用户名相同的 slug 列似乎有点不干,让我感到不舒服,我宁愿尽可能避免依赖外部 gem。
  3. 我的 users#show 需要是什么样的?

【问题讨论】:

    标签: ruby-on-rails session url-rewriting url-routing friendly-id


    【解决方案1】:

    您应该查看友好 ID。让您想做的事情变得异常轻松。

    https://github.com/norman/friendly_id

    它也有一个 Railscast。

    http://railscasts.com/episodes/314-pretty-urls-with-friendlyid?view=asciicast

    【讨论】:

      【解决方案2】:

      如果您的用户名包含 @、-、. 等特殊字符,并且收到错误提示 “无路由匹配”,则您需要过滤其路由。见下文:

      match "/user/:username" => 'users#show', :as => :profile, :username => /[\.a-zA-Z0-9_@-]+/
      

      【讨论】:

        【解决方案3】:

        在解决这个问题几周后,我想说截至 2012 年 8 月 2 日的最佳答案是,如果你这样做,就会违反许多轨道惯例,并撕裂时间和空间本身的结构。

        URL 中丑陋的脚手架是 Rails 实现 RESTful 方法的必要部分。

        【讨论】:

          猜你喜欢
          • 2023-03-03
          • 1970-01-01
          • 1970-01-01
          • 2017-12-29
          • 2014-10-03
          • 1970-01-01
          • 1970-01-01
          • 2013-09-11
          • 1970-01-01
          相关资源
          最近更新 更多