30代プログラム初心者がWEBエンジニアになる

30代プログラム初心者が、WEBエンジニアになるまでの奮闘を書いていきます。

jbuilderについて

こんにちは、ぐっちと申します。

今回は今までなんとなく使っていたjbuilderについて書きたいと思います。

 

そもそもRailsjbuilderが使用できるのは、$ rails new で作成した時点でRails4からはデフォルトでgemが入っているからです。

Gemfile をみると

gem 'jbuilder', '~> 2.5'

 

と記述がありました。

 

jbuilderとは
xxx.json.jbuilderファイルに記述するとJSONにして返してくれるという物。
難しいjson形式を返す時などに便利。

 

jbuilderの書き方

Modelを使わない書き方

一番シンプルな形式

json.set! :key, 'value'

# {"key":"value"}

入れ子

json.set! :key1 do
  json.set! :key2, 'value'
end

# {"key1":{"key2":"value"}}

下のような書き方もできます

json.key1 do
  json.key2 "value"
end

# {"key1":{"key2":"value"}}

キー名が被ると合成されます

json.set! :key1 do
  json.set! :key2, 'value'
end

json.set! :key1 do
  json.set! :key4, 'value'
end

# {"key1":{"key2":"value","key4":"value"}}

Modelを使った書き方

カラム指定で記述

json.(User.first, :id, :created_at)

# {"id":1,"created_at":"****-**-**"}

Modelの配列 は下のように書けます

json.users User.all, :id, :created_at

# {"users":[{"id":1,"created_at":"****-**-**"},{"id":2,"created_at":"****-**-**"}]}

下のような書き方もできます

json.users User.all do |item|
  json.id user.id
  json.created_at user.created_at
end

# {"users":[{"id":1,"created_at":"****-**-**"},{"id":2,"created_at":"****-**-**"}]}

配列を返す場合は下のようになります

json.array! User.all do |item|
  json.id user.id
  json.created_at user.created_at
end

# [{"id":1,"created_at":"****-**-**"},{"id":2,"created_at":"****-**-**"}]

 

 

今までは、一番シンプルな形しか使った事がなかったですが、調べると色々な記述の仕方がありデータの渡し方も色々対応できる事がわかりました。

 

ここまで読んでくださり、ありがとうございました。

 ツイッターで日々の学習をつぶやいています

@Yamaguc45844169