gpt4 book ai didi

ruby-on-rails - ActiveModel::Serializers Gem - 版本化的 API 命名空间问题

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:48 24 4
gpt4 key购买 nike

我是 Rails 和模块/命名空间的新手

我的 Controller 是这样命名的:

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 版本一起命名空间的最佳方法是什么?

最佳答案

请注意命名空间应与文件夹结构相匹配:

# 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

关于ruby-on-rails - ActiveModel::Serializers Gem - 版本化的 API 命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15463356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com