43

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

respond_to :json    

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

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

4

4 回答 4

83

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

路线.rb

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

这将修改整个响应的默认格式clients_controller

于 2012-05-21T09:01:12.250 回答
13

如果您想对两者使用相同的控制器操作,此模式效果很好。像往常一样制作网页版本,使用 :html 作为默认格式。然后,将 api 放在一个路径下,并将 :json 设置为那里的默认值。

Rails.application.routes.draw do

  resources :products

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

end
于 2017-01-22T19:54:35.013 回答
10

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

def index
  render json: Client.all
end
于 2012-05-21T09:02:59.253 回答
0

扩展 Mark Swardstrom 的答案,如果您的 rails 应用程序是一个始终返回 JSON 响应的 API,您可以简单地做

Rails.application.routes.draw do
  scope '/', defaults: { format: :json } do
    resources :products
  end
end
于 2021-11-19T13:31:06.643 回答