のRails 3.0.7、私は我々のアプリのためのAPIを作成しています、と私は、このセットアップ持っ使用:ネストされた名前空間のルート
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
そして、私が持っている
routes.rbをし私の定期的な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
そして、すべての場所の前にUsersControllerとApi :: V1 :: UsersControllerの両方で共有されるメソッドをオーバーライドするまでは正常に動作していたように見えますが、今はapi/v1/usersを介してアクセスしていてもすべてがUsersControllerを指しているようですルート。
私はそれを理解しようとしています。助言がありますか?ありがとう。 PS - 私が無視しているべきでないことを無視している慣習をコメントしてください。
私は、ネームスペースに関係なく、すべてのコントローラ名を一意にする必要がありました。 [ここには助けたリンクがあります](http://blog.philburrows.com/articles/2008/05/02/rails-namespaces-rock-rails-namespaces-suck-/) – paulnsorensen