【问题标题】:Simple rails routing / url question简单的 Rails 路由/url 问题
【发布时间】:2010-04-30 23:00:47
【问题描述】:

我在我的应用程序中使用 Ryan Bates 的nifty authentication 进行用户注册和登录。每个用户has_many :widgets,但我想允许用户浏览其他用户的小部件。我认为像/username/widgets/widget_id 这样的url 方案会很有意义——它将所有与小部件相关的代码保存在同一个地方(小部件控制器)。但是,我不确定如何在我的应用中使用这种风格的 URL。

现在我的代码库允许登录用户只浏览他们自己的小部件,这些小部件位于/widgets/widget_id。我需要对 routes.rb、我的模型类以及需要链接到给定小部件的任何地方进行哪些更改?

我以前做过 Rails 工作,但在涉及更复杂的路由等方面我是新手,所以我很感激任何反馈。感谢您的考虑!

【问题讨论】:

    标签: ruby-on-rails url routing


    【解决方案1】:

    查看嵌套路由。您可以在用户内部嵌套小部件,如下所示:

    map.resources :users do |users|
      users.resources :widgets
    end
    

    这会给你这样的网址:

    /users/1/widgets # all of user 1's widgets
    /users/1/widgets/1 # one of user 1's widgets
    

    查看routing guide了解更多详情。

    【讨论】:

      【解决方案2】:

      最简单的方法是使用 InheritedResources 插件,它会为您处理大部分的跑腿工作。

      # routes:
      map.resources :users do |user|
        user.resources :widgets
      end
      
      
      class WidgetsController < InheritedResources::Base
        # this will require :user_id to be passed on all requests
        # @user will be set accordingly
        # and widget will be searched in @user.widgets
        belongs_to :user
      end
      
      # no changes required to the models
      

      【讨论】:

        猜你喜欢
        • 2011-05-23
        • 2011-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多