使用Rails 3.0.7,我創建了我們的應用程序的API,而且我有這樣的設置:嵌套命名路線將錯誤控制器
的routes.rb
namespace :api do
namespace :v1 do
match "connect" => "users#login", :via => :post
match "disconnect" => "users#logout", :via => :post
resources :users
match "users/:id/foos" => "foos#list", :via => :get
match "users/:id" => "users#update", :via => :put
match "foos/:id/bars" => "bars#list_by_foo", :via => :get
match "foos/:id" => "foos#show", :via => :get, :constraints => { :id => /\d+/ }
match "bars/:id" => "bars#show", :via => :get
end
end
# other routes here e.g.
match "users/find" => "users#find_by_name", :via => :get
match "users" => "users#create", :via => :post
然後,我有我經常app/controllers/application_controller.rb
和app/controllers/users_controller.rb
文件,以及那些像我的定義和app/controllers/api/v1/application_controller.rb
文件app/controllers/api/v1/users_controller.rb
如下:
class Api::V1::ApplicationController < ApplicationController
before_filter :verify_access
def verify_access
# some code here
end
end
class Api::V1::UsersController < Api::V1::ApplicationController
skip_before_filter, :except => [:show, :update, :delete]
end
而且everythi前ng似乎正在工作,直到我覆蓋由UsersController和Api :: V1 :: UsersController共享的方法 - 現在看起來好像所有內容都指向UsersController,即使我通過api/v1/users訪問路線。
我在我的智慧結尾試圖弄清楚。有什麼建議麼?謝謝。 PS - 隨意評論任何約定,我不理會我不應該或我可能已經搞砸了其他的東西:)
原來我不得不讓所有的控制器名稱都是唯一的,不管命名空間如何。 [這是一個幫助鏈接](http://blog.philburrows.com/articles/2008/05/02/rails-namespaces-rock-rails-namespaces-suck-/) – paulnsorensen