jbuilderについて
こんにちは、ぐっちと申します。
今回は今までなんとなく使っていたjbuilderについて書きたいと思います。
そもそもRailsでjbuilderが使用できるのは、$ rails new で作成した時点でRails4からはデフォルトでgemが入っているからです。
Gemfile をみると
と記述がありました。
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":"****-**-**"}]
今までは、一番シンプルな形しか使った事がなかったですが、調べると色々な記述の仕方がありデータの渡し方も色々対応できる事がわかりました。
ここまで読んでくださり、ありがとうございました。
ツイッターで日々の学習をつぶやいています