Rails名称空间路由和资源上的自定义操作

时间:2012-12-06 18:33:26

标签: ruby-on-rails namespaces routes

我目前已设置这些路线:

namespace :api do
  namespace :v1 do
    resources :users do
      match 'api/v1/users/all'
    end
    resources :sessions
  end
end

我正在尝试在我的用户控制器中设置一个名为“all”的自定义操作。

如何获得匹配的路线?我试过这些,并没有得到路由错误:

resources :users do
  match 'api/v1/users/all' => "users#all" (also "api/v1/users#all" and "api_v1_users#all"
end

使我能够连接自定义操作的路线是什么?

由于

1 个答案:

答案 0 :(得分:2)

您需要添加collection

namespace :api do
  namespace :v1 do
    resources :users do
      collection do
        get 'all'
      end
    end
    resources :sessions
  end
end

namespaceresources方法调用创建层次结构;与resource :users块嵌套的路径将采用它的祖先的路径。 collection在资源集合上创建嵌套路由,而不是资源的单个实例。

/api/v1/users/all

推荐阅读:http://guides.rubyonrails.org/routing.html#adding-collection-routes