[初心者向け]Railsのコンソールでjbuilderの中身を確認した話


やったこと

JsonをRailsのアプリで扱いたく、jbuilderで値を生成しました。
ただ、使う前に欲しいデータが手に入るのか確認したく、コンソールで確認してみました。
その手続きの話です。

そもそも、Jbuilderとは?

Railsの機能としてある、Builderテンプレートの中の1種で、Railsガイドの説明は以下の通りです。

BuilderテンプレートはERBの代わりに使用できる、よりプログラミング向きな記法です。これは特にXMLコンテンツの生成を得意とします。

JbuilderもBuilderテンプレートの一種であり、また、RailsのGemの一つでもあるそうです。JbuilderはRailsのGemfileにデフォルトで含まれています。なので、削除をしていない限り特に何もインストールせずに使えます。

使い方

Railsガイドによると、Jbuilderの具体的な使い方は下記の通り。

.jbuilderという拡張子を持つテンプレートでは、jsonという名前のJbuilderオブジェクトが自動的に利用できるようになります。

some_file_name.json.jbuilder
json.name("Alex")
json.email("[email protected]")
#=> { "name": "Alex", "email": "[email protected]" }

その他の実際に利用する際の具体的な使い方は、公式ドキュメントや以下の記事が詳しかったです。

実際にどんなコードが生成されるのか確認してみた

では本題です。実際に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テンプレートを使って、生成したデータを利用していこうと思います^^