【问题标题】:Ruby on Rails - add ID parameter to all routesRuby on Rails - 为所有路由添加 ID 参数
【发布时间】:2013-02-14 03:26:54
【问题描述】:

我想知道在 Rails 路由中实现以下功能的最佳方法是什么:

场景:用户注册账户的网站 => accountID(账户)成为网站内的主要实体。

示例:https://basecamp.com/:ID/ - 将授权用户带到 Basecamp 仪表板。从这里所有的 URL 都包含 https://basecamp.com/:ID/projects 中的 :accountID - 列出该帐户下的所有项目。

提前非常感谢!

【问题讨论】:

    标签: ruby-on-rails routing


    【解决方案1】:

    使用路由前缀

    scope ":account_id" do
      resources :projects
      ...
    end
    

    这将始终为您在范围内定义的每个资源控制器上提供 params[:account_id]。

    在此处阅读更多信息:http://guides.rubyonrails.org/routing.html#prefixing-the-named-route-helpers

    更新:这是一个完整的示例,包括您的“仪表板”默认路由

    scope ":account_id" do
      root :to => "dashboard#index"  # http://example.com/12323/
      resources :projects            # http://example.com/12323/projects
      resources :todos               # http://example.com/12323/todos
      ...
    end
    

    【讨论】:

    • 是的——这就是我想要的。我仍然存在的问题是如何生成 URL 以添加 [:account_id] 的值。有什么想法吗?
    • IIRC 你只需要像 projects_path(@your_account_id) 和 edit_project_path(@your_account_id, @project) 等这样写
    • @CarstenGehling 有一种比将 id 附加到应用程序中的每条路线更简单的方法。肯定是脖子疼。我相信有一个选项可以在 Rails 中设置默认参数...不是吗?
    • @Mohamad 如果您遇到了更简单的方法,请提及。
    • 您也可以使用as 选项来简化命名路线 - api.rubyonrails.org/v5.1/classes/ActionDispatch/Routing/Mapper/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2014-01-06
    相关资源
    最近更新 更多