输出 JSON 而不是 HTML

class UsersController < ApplicationController
  def index
    hashmap_or_array = [{ name: "foo", email: "foo@example.org" }]

    respond_to do |format|
      format.html { render html: "Hello World" }
      format.json { render json: hashmap_or_array }
    end
  end
end

此外,你还需要以下路线:

resources :users, only: [:index]

这将以两种不同的方式响应/users 的请求:

  • 如果你访问/users/users.html,它将显示一个内容为 Hello World 的 html 页面
  • 如果你访问/users.json,它将显示一个 JSON 对象,其中包含:
[
  {
    "name": "foo",
    "email": "foo@example.org"
  }
]

如果要确保路由仅响应 JSON 请求,则可以省略 format.html { render inline: "Hello World" }