【发布时间】:2012-01-31 18:55:01
【问题描述】:
使用 ROAR (https://github.com/apotonick/roar) 并且不使用 ActiveRecord 或任何我想要的视图模板:
- 使用 默认 JSON rederer 但我的自己的 mime 类型通过respond_with 呈现JSON
- 使用 default 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
获取http://domain/users 接受申请/vnd.xxx-v1
错误:缺少模板 api/v1/users/index、api/v1/base/index 和 {:handlers=>[:erb, :builder], :formats=>[:xxx_v1], :locale=>[ :en, :en]}
在阅读了几篇文章后 Rails Custom Renderer 或 rails 3 response format and versioning using vendor MIME type in the Accept header 我还是搞不定..
-=== 小更新 ===-
当我直接在控制器中使用渲染时,它正在工作! respond_with 总是有问题...
render :xxx_v1 => User.all
【问题讨论】:
标签: ruby-on-rails json rendering mime-types