Rails 4 – 如何呈现JSON而不管请求的格式?
我想要一个Rails控制器(所有这些,实际上,它是一个API)来永远呈现JSON。
我不希望Rails返回“找不到路由”,或者尝试找不到HTML模板,或者返回406.我只是希望它自动并始终呈现JSON,例如从RABL或JBuilder视图。
这可能吗? 相关问题似乎有答案,具有上述缺点。
您可以在控制器中添加before_filter
,将请求格式设置为json
:
# app/controllers/foos_controller.rb before_action :set_default_response_format protected def set_default_response_format request.format = :json end
这会将所有响应格式设置为json
。 如果要允许其他格式,可以在设置request.format
时检查是否存在format
参数,例如:
def set_default_response_format request.format = :json unless params[:format] end
你可以使用format.any
:
def action respond_to do |format| format.any { render json: your_json, content_type: 'application/json' } end end
我有类似的问题,但扩展名为“.js”。 要解决我在视图中执行以下操作: <%= params.except!(:format) %> <%= will_paginate @posts %>
当然:
before_filter :always_json protected def always_json params[:format] = "json" end
您应该将它放在API的根控制器中。
- 通过json设计失败认证发回html而不是json
- 如何覆盖’as_json’或’to_json’方法以便’respond_to’而不包含指定的信息?
- 来自控制器的include_root_in_json
- Ruby on Rails Instagram Gem like和评论计数不正常
- 如何关闭仅用于json的rails protect_from_forgeryfilter
- 获取谷歌搜索结果的正确方法是什么?
- 什么是生成json的哈希结构?
- Rails:NoMethodError(_controller的未定义方法_url。在创建之后我似乎无法正确响应json。为什么?
- 更新属性后ActiveRecord不保存