すごい基本的なことだと思うんですが。あと、他にもいくつかの方法があるとは思うのですがとりあえずメモ的に。
コード
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
と間違って記載されていました〜。