【问题标题】:URI management and navigation in Ruby on RailsRuby on Rails 中的 URI 管理和导航
【发布时间】:2011-07-01 15:07:32
【问题描述】:

我想基于 URI 在 rails 中实现一个特殊的路由(我正在使用带有 Mongoid 和设计的 rails 3.0.4)。假设我的用户登录,一旦登录我想将他重定向到一个私人区域,例如http://www.mysite.com/site1。许多用户可能属于site1,许多用户属于site2...一个站点的用户无权查看另一个站点。今天登录后重定向很好,但我对如何实现 siteX 感到困惑(每个站点都有自己的数据)。我有以下路线:

match '/:site_name' => 'site#index', :constraints => { :site_name => /'a pattern'/ }
  resources :sites do
end

因为我需要坚持这种 URI 格式,我应该将所有其他资源嵌套在 :sites 中吗?例如,如果我想显示站点 2 的订单 1,则 URL 应类似于 http://www.mysite.com/site2/order/1。我不能将资源的名称“站点”放在 URI 中,因为它直接以标识符开头。有没有其他方法可以做到这一点,最好的做法是什么?希望我的解释有意义。

非常感谢您的帮助! 泰德

【问题讨论】:

    标签: ruby-on-rails routing uri


    【解决方案1】:

    我建议您放弃“子目录”的想法。 link_to 和其他帮助者会遇到(并非无法克服的)困难。

    如果您的情况可能,我会设置子域(例如 site1.mysite.com)

    【讨论】:

      【解决方案2】:

      url.com/site_name 有点疯狂。

      如果只有一个用户可以属于一个站点,那么从用户的角度来看,使用resource 而不是resources

      例如,url.com/orders 将是所有 current_user.orders,因为 current_user 有_一个站点(或者是一个站点的成员)。

      如果您需要特定于站点的导航,请从/site_name 获取公开性质的特定于站点的详细信息。例如,url.com/site_name/pricing

      如果您真的想将您的网站分解为/site_name 特定路由,那么通过它进入一个子域。您甚至可以尝试使用sudomain devise 来帮助您入门。

      【讨论】:

        猜你喜欢
        • 2010-09-11
        • 2017-10-03
        • 2014-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多