やったこと
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例
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