Ruby on rails 发布JSON时模型的神秘Rails 5 API加载错误;作为表单数据过帐时没有错误

Ruby on rails 发布JSON时模型的神秘Rails 5 API加载错误;作为表单数据过帐时没有错误,ruby-on-rails,Ruby On Rails,我有一个名称空间模型,如下所示: module A module B class C end end end 在app/models/a/b/c.rb中 然后是控制器 module API module V2 module B class CController include ActionController::RespondWith respond_to :json end end en

我有一个名称空间模型,如下所示:

module A
  module B
    class C
    end
  end
end
app/models/a/b/c.rb

然后是控制器

module API
  module V2
    module B
      class CController
        include ActionController::RespondWith
        respond_to :json
      end
    end
  end
end
在app/controllers/api/v2/b/c_controller.rb中

命名空间文件通过
config.autoload_paths+=Dir[“{Rails.root}/app/*/**/”]自动加载到
application.rb

Cors的配置使用:

config.middleware.insert_after 0, Rack::Cors, logger: Rails.logger do
  allow do
    origins '*'
    resource '*',
             headers: :any,
             methods: %i[get options post put patch delete]
  end
end
现在,当我将参数作为表单数据发布到create操作时,一切正常。当我使用JSON字符串+内容类型application/JSON头发出相同的请求时,会出现以下错误:

加载错误:
无法自动加载常量C,应为
app/models/a/b/c.rb来定义它

Rails 5.2.0、Ruby 2.5.1


谁能帮忙或有什么想法?

我也犯了同样的错误,我刚刚成功地找出了这个问题的原因。 这是因为抽象控制器试图包装您的参数,并将您的控制器类名转换为模型名。 默认情况下,在config/initializers/wrap_parameters.rb文件中启用json请求的参数包装器。 但您也可以通过在控制器中定义下一行在控制器级别禁用此功能:

wrap_parameters format: []