やったこと
JsonをRailsのアプリで扱いたく、jbuilderで値を生成しました。
ただ、使う前に欲しいデータが手に入るのか確認したく、コンソールで確認してみました。
その手続きの話です。
そもそも、Jbuilderとは?
Railsの機能としてある、Builderテンプレートの中の1種で、Railsガイドの説明は以下の通りです。
BuilderテンプレートはERBの代わりに使用できる、よりプログラミング向きな記法です。これは特にXMLコンテンツの生成を得意とします。
JbuilderもBuilderテンプレートの一種であり、また、RailsのGemの一つでもあるそうです。JbuilderはRailsのGemfileにデフォルトで含まれています。なので、削除をしていない限り特に何もインストールせずに使えます。
使い方
Railsガイドによると、Jbuilderの具体的な使い方は下記の通り。
.jbuilderという拡張子を持つテンプレートでは、jsonという名前のJbuilderオブジェクトが自動的に利用できるようになります。
json.name("Alex")
json.email("alex@example.com")
#=> { "name": "Alex", "email": "alex@example.com" }
その他の実際に利用する際の具体的な使い方は、公式ドキュメントや以下の記事が詳しかったです。
実際にどんなコードが生成されるのか確認してみた
では本題です。実際にJsonデータを使うのはviewなのですが、その前に、きちんとJsonデータが作られているか確認したく、コンソールで確認してみることにしました。
$ rails c
で、コンソールを立ち上げて
[1] pry(main)> @categories = Category.all
インスタンス一覧を@categories
に代入します。
そして、コンソールで順番に下記を実行します。
[2] pry(main)> Jbuilder.encode do |json|
[2] pry(main)* json.array! @categories, :code, :name
[2] pry(main)* end
#=> "[{"code":100, "name":"カテゴリー1"},{"code":200, "name":"カテゴリー2"},{"code":300, "name":"カテゴリー3"}]
無事、欲しいjsonデータが出力されていました^^
json.array! @categories, :code, :name
の部分は、先にあげた下記の記事を参考に作成したものです。
引き続き、Jbuilderテンプレートを使って、生成したデータを利用していこうと思います^^