我将使用 ROAR (https://github.com/apotonick/roar),而不使用 ActiveRecord 或任何视图模板,完成以下任务:
- 使用 默认 的 JSON 渲染器,但使用 自己的 Mime 类型来使用 respond_with 渲染JSON。
- 使用 默认 的 JSON 解析器,但使用 自己的 Mime 类型将 POST-body 的条目放入 params 哈希中。
config / initializers / mime_types.rb:
Mime::Type.register "application/vnd.xxx-v1+json" , :xxx_v1
controllers/api/base_controller.rb
class Api::V1::BaseController < ActionController::Base
respond_to :xxx_v1
ActionController.add_renderer :xxx_v1 do |obj, options|
json = obj.to_json
self.content_type ||= Mime::Type.lookup('application/vnd.xxx-v1+json')
self.response_body = json
end
end
controllers/api/user_controller.rb:
class Api::V1::UsersController < Api::V1::BaseController
def index
respond_with User.all
end
end
接受 application/vnd.xxx-v1
错误:缺少模板api/v1/users/index,api/v1/base/index,处理程序为{:handlers=>[:erb, :builder], :formats=>[:xxx_v1], :locale=>[:en, :en]}
阅读了几篇文章之后,例如Rails自定义渲染器或使用Accept头中的供应商MIME类型进行Rails 3响应格式和版本控制,我仍然无法使其工作...
-=== 小更新 ===-
当我在控制器中直接使用render时,它可以工作!总是与respond_with有问题...
render :xxx_v1 => User.all