我有以下代码:
module Api
module V1
class ApplicationController < ::ApplicationController
def succeed_with_object(data, status_code = 200)
render json: {success: true, data_type: 'object', data: data.as_json}, status: status_code
end
end
end
end
其中ApplicationController
是我所有api控制器的父控制器。 And :: ApplicationController是Web控制器中的父控制器。然后我有
module Api
module V1
class AppController < ApplicationController
respond_to :json
skip_before_filter :verify_authenticity_token
def android
file_name = "app-latest-#{ANDROID_VERSION}.apk"
app = MobileApp.new('android', ANDROID_VERSION, "http://example.com/download/#{file_name}")
succeed_with_object(app)
end
end
end
end
然后当我在生产模式中访问http://example.com/api/v1/app/android时,我遇到了
NoMethodError (undefined method `succeed_with_object' for #<Api::V1::AppController:0x0000000569bbd0>):
app/controllers/api/v1/app_controller.rb:11:in `android'
但它在开发模式下运行良好。我想知道生产模式和开发模式之间的继承层次是否有所不同。
答案 0 :(得分:1)
尝试使用此结构:
class Api::V1::ApiController < ApplicationController
respond_to :json
end
这将是所有API控制器的父控制器。
然后你可以使用上面的ApiController扩展你的api控制器。
class Api::V1::TransactionsController < Api::V1::ApiController
end