默认情况下渲染JSON而不是HTML?

时间:2012-05-21 08:29:53

标签: ruby-on-rails ruby-on-rails-3 rendering

我试着告诉rails 3.2默认情况下它应该呈现JSON,并完全像这样踢HTML:

respond_to :json    

def index
  @clients = Client.all
  respond_with @clients
end

使用此语法,我必须将.json添加到URL。我怎样才能实现它?

3 个答案:

答案 0 :(得分:74)

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

<强>的routes.rb

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

这将修改整个clients_controller

的默认响应格式

答案 1 :(得分:10)

如果您在索引操作中不需要RESTful响应,那么只需直接呈现您的xml响应:

def index
  render json: Client.all
end

答案 2 :(得分:7)

如果要对两者使用相同的控制器操作,则此模式很有效。像往常一样制作网络版,使用:html作为默认格式。然后,将api塞在路径下并将:json设置为默认值。

Rails.application.routes.draw do

  resources :products

  scope "/api", defaults: {format: :json} do
    resources :products
  end

end