如何在rails中全局预防json渲染?

时间:2013-05-12 23:36:44

标签: ruby-on-rails json respond-to

我有一个rails应用程序,其中大多数操作都响应json。

是否有任何“开关”我可以关闭以防止所有控制器响应json尽管respond_to方法调用,或者我仍然必须在每个操作中手动禁用它(这看起来很奇怪)。

2 个答案:

答案 0 :(得分:3)

我有一个建议,虽然我有点害怕:)

class < ApplicationController
  before_filter :disable_json

  def disable_json
    if request.format =~ /json/
      //do something you like, redirect_to or reply with message
    end
  end

before_filter将在任何特定控制器的方法之前被触发。

json标头通常是“application / json”

对于request,您可以在此处阅读更多内容:http://guides.rubyonrails.org/action_controller_overview.html#the-request-object

答案 1 :(得分:1)

你也可以在routes.rb中使用约束来实现:

# Only allow HTML requests for all resources within the block
scope constraints: {format: :html} do
  resources :posts
  resources :comments
  get "/profile", to: "users#profile"
end