You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JSONAPI-Resources加命名空间后报Could not find resource错误如何解决

排查解决步骤

该错误本质是JSONAPI-Resources的默认资源类查找规则和Rails Zeitwerk自动加载的命名空间路径规则不匹配,按以下顺序排查即可:

  1. 检查文件存放路径
  • 确认connector_resource.rb必须放在app/resources/api/v1/connector_resource.rb路径下,路径的每一级目录名、文件名拼写必须和类的命名空间、类名完全匹配(大小写也要一致)
  • 确认connectors_controller.rb必须放在app/controllers/api/v1/connectors_controller.rb路径下
  1. 路由显式指定资源命名空间
    JSONAPI-Resources默认不会自动读取路由嵌套的命名空间,需要在路由配置中显式指定资源所属模块,修改routes.rb对应配置:
Rails.application.routes.draw do
  namespace :api do
    namespace :v1 do
      jsonapi_resources :connectors, only: %i[index show], resource_module: 'api/v1'
    end
  end
end
  1. 修正控制器继承关系
    JSONAPI-Resources的资源控制器需要继承JSONAPI::BaseController而非默认的ApplicationController,修改connectors_controller.rb代码:
module Api
  module V1
    class ConnectorsController < JSONAPI::BaseController
    end
  end
end
  1. (可选)显式指定控制器对应资源类
    如果上述配置后仍报错,可以在控制器中手动绑定对应的资源类,避免自动推断出错:
module Api
  module V1
    class ConnectorsController < JSONAPI::BaseController
      resource_class Api::V1::ConnectorResource
    end
  end
end
  1. 清理缓存验证
    修改完成后执行bin/rails tmp:cache:clear清理Rails缓存,再运行bin/rails zeitwerk:check验证加载正常,之后重启服务器即可。

内容的提问来源于stack exchange,提问作者noobmaster69

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:39:05