Rails5 で json を返す
Ruby Ruby on Rails
Published: 2019-05-26

やったこと

Rails5 で json を返す方法について調べました。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

$ rails --version
Rails 5.2.3

$ gem list | grep jbuilder
jbuilder (2.8.0)

調査

hash を使う方法、Jbuilder を使う方法をそれぞれ試してみます。

hash を使う方法

app/controllers/tasks_controller.rb

class TasksController < ApplicationController
  def show
    res = {
      'a': 'val1',
      'b': 'val2'
    }

    render :json => res
  end
end

URL例

http://localhost:3000/tasks/1

Jbuilder を使う方法

JbuilderはBuilderと似ていますが、XMLではなくJSONを生成するのに使われます。

URL に json を含む場合

app/views/tasks/show.json.jbuilder

json.a "val1"
json.b "val2"

URL例

http://localhost:3000/tasks/1.json

URL に json を含まない場合

app/views/tasks/show.json.jbuilder

json.a "val1"
json.b "val2"

app/controllers/tasks_controller.rb

class TasksController < ApplicationController
  def show
    respond_to do |format|
      format.html { render 'show.json.jbuilder' }
      format.json
    end
  end
end

URL例 http://localhost:3000/tasks/1

参考