加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails 3和JSON:默认渲染器,但是自定义mime类

发布时间:2020-12-17 04:39:22 所属栏目:百科 来源:网络整理
导读:使用ROAR( https://github.com/apotonick/roar)并且不使用ActiveRecord或我想要的任何视图模板: 使用默认的JSON重定者,但我自己的mime类型使用respond_with呈现JSON 使用默认的JSON解析器,但我自己的mime类型将POST主体的条目放入params散列. 配置/初始化/
使用ROAR( https://github.com/apotonick/roar)并且不使用ActiveRecord或我想要的任何视图模板:

>使用默认的JSON重定者,但我自己的mime类型使用respond_with呈现JSON
>使用默认的JSON解析器,但我自己的mime类型将POST主体的条目放入params散列.

配置/初始化/ mime_types.rb:

Mime::Type.register "application/vnd.xxx-v1+json",:xxx_v1

控制器/ 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

控制器/ API / user_controller.rb:

class Api::V1::UsersController < Api::V1::BaseController 

  def index
    respond_with User.all
  end
end

获得http://domain/users
接受application / vnd.xxx-v1

错误:缺少模板api / v1 / users / index,api / v1 / base / index with {: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

解决方法

要使用自定义mime类型自动解析http正文,请执行以下操作:
config / initializers / mime_types.rb:
ActionDispatch::ParamsParser::DEFAULT_PARSERS[Mime::Type.lookup('application/vnd.xxx_v1+json')]=lambda do |body|
  JSON.parse(body)
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读