如何渲染json:在所有控制器操作Rails 4.2.1中

时间:2015-04-17 01:32:57

标签: ruby-on-rails ruby json ruby-on-rails-4 ruby-on-rails-4.2

根据4.2发行说明中的​​respond_with / respond_to说明...... Ruby Guides和:

  

我想借此机会将respond_with / class-level respond_to拆分为外部插件。我通常不喜欢使用这种模式的代码。它鼓励模型#to_json,它以隐藏代码的方式隐藏HTML和API响应之间的差异。

那么我们如何将它拆分为4.2的gem,具有当前行为,还可以选择通过配置点获得此行为的新行为。 - DHH

我已经安装了ActiveModelSerializer 0.9.3并且我发现它仍然适用于:

render json: @object

控制器中的

......

如何在应用程序控制器中默认render json:

2 个答案:

答案 0 :(得分:3)

您不需要直接从应用程序控制器渲染任何视图,而是从扩展ApplicationController的控制器渲染。 如果你说respond_with仍然在你的rails版本中工作,那么你只需要把respond_to:json放在如下:

class MyController < ApplicationController
respond_to :json

def my_action
....
respond_with(@variable)
end
end

respond_with将根据您的请求的mime类型自动呈现正确格式的视图。

如果它不起作用,则添加gem&#39; responders&#39;,&#39;〜&gt; 2.0&#39;到您的宝石文件。

答案 1 :(得分:2)

您可以修改routes.rb文件以指定默认格式

routes.rb

resources :clients, defaults: {format: :json}

这将修改整个clients_controller

的默认响应格式