【问题标题】:Creating urls like :user/:post in rails在 Rails 中创建 :user/:post 之类的 url
【发布时间】:2014-07-21 19:15:31
【问题描述】:

我只是想知道如何在理论上制作像 localhost:3000/:user/post/:post 这样的 url,例如 twitter,例如https://twitter.com/PigsAndPlans/status/491290440512331776 以及如何为帖子提供一个由数字和字母组成的唯一 ID,例如 vine http://vine.co/v/M2JYAhg3HHY

谢谢

【问题讨论】:

  • 我不认为你已经读过 Routing system 就是这样做的?那和修改to_param(如here所示)应该可以满足您的需求。
  • @PinnyM 路由文章当然有帮助。我看过,但只是略过,错过了我需要的部分哈哈,但对于 id,我更多地谈论的是数字的实际生成
  • 这就是 to_param 的用武之地 - 请参阅链接文章。

标签: ruby-on-rails ruby url routing


【解决方案1】:

您的路由文件中的类似内容将匹配第一个 URL 模式

match ":username/post/:post_id", to: "users_posts#index"

并在您的控制器中为您提供params[:username]params[:post_id] 变量。不过,请仔细考虑将变量 (:username) 作为路由的第一部分。您必须确保您的应用永远不需要与该模式冲突的 URL。更好的方法是您提供的 vine URL 模式,它具有 /v 前缀。

【讨论】:

    【解决方案2】:

    您可以在 config/routes.rb 中使用以下代码创建 url 模式

    resources :users do
      resources :posts
    end
    
    # http://localhost:3000/users/:user_id/posts/:post_id
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    相关资源
    最近更新 更多