0

Railsで名前空間APIを作成しようとしていますが、問題が発生しています

  # Resources
  resources :users do 
    resources :contacts
  end

  #==========================================>
  #  API namespacing and routing
  #==========================================>

  namespace :api do 
    namespace :v1 do

      # =======================>
      # Resources -> Users
      #   Resources -> Contacts
      # =======================>
      resources :users do
        resources :contacts
      end

      # =======================>
      # Resources -> Messages 
      #   Resources -> Transcriptions
      # =======================>
      resources :messages do
        resources :transcriptions 
      end

    end
  end

'api'名前空間の外部(つまり、通常のapp / controllers / users_controller.rb領域)にhtml応答バージョンのリソースを配置したいのですが、名前空間内にjson応答を設定します。

ただし、URLを「/api/v1/users.json」リンクにポイントすると、app / controllers / api / v1 / users_controllerに配置したものではなく、OUTSIDEリソースapp / controllers/users_controllerによって指定されたコントローラーが使用されます。

名前空間が異なるにもかかわらず、1つのリソース参照のみを許可していますか?

なぜこれが起こっているのですか

4

2 に答える 2

1

ルーティング定義は問題ないようです。最初に確認することは、次のコマンドを実行して、Rails ルーターによってどのルートが生成されるかです。

$ bundle exec rake routes | grep users

定義したユーザー ルートをそれぞれの URL 構造にマップする必要があります。何か問題がある場合は、ルートが正しく定義されていない可能性があります。あなたの場合、私はどちらを疑いますか。

もう 1 つの考えられる問題は、名前空間化されたユーザー コントローラーのコントローラー クラス名である可能性があります。したがって、app/controllers/api/v1 の下のユーザー コントローラーは次のようになります。

class Api::V1::UsersController < ApplicationController
 ....
end

実装しようとしているのと同じ種類の構造を持つRubygems.org ソースを見てください。

于 2012-07-28T12:41:14.707 に答える
1

コントローラーは次のようになります

module Api::V1
    class UserController < ActionController::Base
...
    end
end
于 2012-07-28T13:12:26.110 に答える