2016-02-19 20 views
0

我有rails4運行與active_model_serializers(0.10.0.rc2)寶石。今天我開始爲我的客戶端設備開發api。我跑RSpec的測試中,它給了我這個錯誤未知的適配器:json_api。有效的適配器是:[「:fragmentcache」,「:json」,「:flattenjson」,「:null」,「:jsonapi」]

ArgumentError: 
    Unknown adapter: json_api. Valid adapters are: [":fragmentcache", ":json", ":flattenjson", ":null", ":jsonapi"]. 

我的配置:

class BaseSerializer < ActiveModel::Serializer 
    def initialize(object, options = {}) 
    ActiveModel::Serializer.config.adapter = :json_api 
    super(object, options) 
    end 
end 

我檢查寶石它仍然是0.10.0.rc2。所以沒有改變的寶石名單。我不知道什麼會導致這個問題?

請幫助

回答

0

我發現從這個線程https://github.com/rails-api/active_model_serializers/issues/993的解決方案。我的問題是我在我的config/inflections.rb中有'API'首字母縮寫詞。

inflect.acronym 'RSA' 
inflect.acronym 'API' 

:json_api適配器將實際轉換爲類。由於api將被翻譯爲API然後AMS將無法找到像這樣的JsonAPI。

爲了解決這個問題我必須把類,如下直接:

class BaseSerializer < ActiveModel::Serializer 
    def initialize(object, options = {}) 
    ActiveModel::Serializer.config.adapter = ActiveModel::Serializer::Adapter::JsonApi 
    super(object, options) 
    end 
end