Railsで指定URLへのアクセスがあった際にJSONを返却する

October 25, 2014

すごい基本的なことだと思うんですが。あと、他にもいくつかの方法があるとは思うのですがとりあえずメモ的に。

コード

Bookモデルがあり、name, price, created_atのアトリビュートを持っているという前提です。

app/controllers/books\controller.rb_

def show @book = Book.find(params[:id]) respond_to do |format| format.json end end

app/views/books/show.json.jbuilder

json.extract! @book, :id, :name, :price, :created_at

結果はこれ。

{ “created_at”: “2014-10-19T11:52:43.961Z”, “id”: 1, “name”: “Book 1”, “price”: 1000 }

もうちょっと応用的なのはこんな感じ。

json.extract! @book, :price json.name_with_id ”#{@book.id} - #{@book.name}” json.publisher do json.name @book.publisher.name json.address @book.publisher.address end unless @book.high_price? json.low_price true end

結果はこれ。

{ “low_price”: true, “name_with_id”: “1 - Book 1”, “price”: 1000, “publisher”: { “address”: “Ichigaya”, “name”: “Gihyo inc.” } }

結構簡単なんだなぁ。

環境

  • Rails 4.1.6

参考書籍

ちなみに、89ページに記載がありますが、app/views/books/show.json.jbuilderのところが、app/views/books/show.jbuilder.jsonと間違って記載されていました〜。


Profile picture

Written by morizotter who lives and works in Tokyo building useful things. You should follow them on Twitter