2

Rails とモジュール/名前空間は初めてです

私のコントローラーは次のように名前空間が付けられています:

module Api
  module V1
   class PostsController < ApiController

また、ActiveModel::Serializers はアプリ フォルダーに "Serializers" フォルダーを配置し、その中に次のコードを含む post_serializer.rb を作成しました。

class PostSerializer < ActiveModel::Serializer
  attributes :id, :body, :category, 
end

JSON 応答にアクセスしようとすると、次のようになります。

NameError at /api/v1/posts
uninitialized constant Api::V1::PostsController::PostSerializer

ここでの問題は何ですか? API バージョンと一緒にシリアライザーを名前空間化する最良の方法は何ですか?

4

1 に答える 1

7

名前空間はフォルダー構造と一致する必要があることに注意してください。

# should be in app/controllers/api/v1/posts_controller.rb
module Api
  module V1
   class PostsController < ApiController

# should be in app/serializers/post_serializer.rb
class PostSerializer < ActiveModel::Serializer

接頭辞なしで使用PostSerializerすると、現在の名前空間が想定されます。グローバル名前空間を参照している場合::PostSerializer

于 2013-03-17T18:16:25.490 に答える