强制所有操作使用指定的渲染格式

10

我希望以 json 形式响应所有格式。

我可以强制渲染成 json,这样该操作将呈现 show.json,尽管有 accept 头:

  def show
    render formats: :json
  end

我如何为控制器的所有操作设置渲染格式?

类似于这样:

class GalleriesController < ApplicationController
  formats :json
end

1
你尝试过使用 respond_to do |format| format.html { render formats: :json } format.js { render formats: :json } end 吗? - Richard Peck
请查看以下链接:https://dev59.com/Qm445IYBdhLWcg3w5OMI - Sachin Prasad
我不想在每个操作中添加代码,所以似乎https://dev59.com/Qm445IYBdhLWcg3w5OMI#6519357是处理这个问题的唯一方法? - freemanoid
如果您在操作中没有放置代码,那么在显示操作中它们将呈现什么? - phoet
@freemanoid,你有JSON视图吗? - phoet
显示剩余2条评论
3个回答

9
作为对问题和可读性的所有评论的总结,以及未来用户的需求,您可以按照此处提到的方式进行操作:这里
before_filter :default_format_json

def default_format_json
  request.format = "json"
end

1
看起来不错。但你确定这是正确的吗?我不想改变请求格式,我想要改变 响应 的格式。 - freemanoid
至少,它是可行的。采纳这个解决方案还是不采纳,取决于你 :) - Dirty Henry

1
在你的控制器中:
def my_action
  formats.clear
  formats << :json
end

(我只在Rails 4.2和3.2中进行了测试。) formats 返回一个格式符号的数组。它被委托给 @_lookup_context,它是 ActionView::LookupContext 的一个实例。

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接