Railsで使えるGem

Backbone.jsのためにRails3.2でJSON APIをつくる~RABL

投稿日:

github.com/nesquena/rabl

railscasts.com/episodes/322-rabl?language=ja&view=asciicast

Rails3.2ではデフォルトでJSONを提供していて色々json_asっていうのをオーバーライドすればいろいろカスタマイズできるけど、RABLというテンプレートシステムを使うと簡単にJSONが書ける

Backbone.js on Railsがこちらを使っていたので

Rails4からはrbファイルをテンプレートにできるけど、こっちも便利かもしれない

インストール

Gemfile

yajlは高速なJSONパーサー

bundle

計画と準備

model

掲示板をつくりたいので、つぎのようなモデルで提供するAPIを考える

 
役割メソッドとURL
記事の一覧GET /api/article
個別記事の表示GET /api/article/:id
記事の投稿POST /api/article
コメントの投稿POST /api/comment

commentはarticleに完全に従属してるので api/article/:article_id/commentの方がよかったかも

controller

controllerはAPI提供用のを2つとページ表示用のを準備(複数形にしとくべきだった)

config/routes

 

article_controller

comment_controller

あ、コメントの方エラー処理忘れてる

rablテンプレートを使うのはarticle#indexとarticle#show

RABLテンプレート

index.json.rabl

今回は作成日時を入れたかったんですね

*訂正

オブジェクトのコレクションの場合はcollectionを使うのが正しいようです

また、その場で計算したい場合はcodeブロックを使うと便利

こんな感じで返ってきます(後で書いてあるルート名を表示しない設定をしています)

 

show.json.rabl

記事と関連するコメントをまとめて取得するにはchildを使う

試してみる

ためしにデータを入れてみて

 

curlで

コメントは2個くらいいれてみたりして

curlで取れることを確認

 Configuration

データは来てるけど、このままだとBackbone.jsで処理するには都合が悪い

データの頭と関連するデータの頭に余分なモデル名がついてるから

これで1階層データが深くなると面倒くさいことになる

そこで、config/initializers/rabl.rbをつくって

github.com/nesquena/rabl#configuration

これで扱いやすくなった

 

[Rails]Railsを使ったRESTfulなAPIの作り方

Railsのhelperメソッドの使い方

nodeはJSONの要素の単位 次にkey名とvalue ここではcollectionを使っているので1objectごとにrecipeという名前をつけてヘルパーを使っている

-Railsで使えるGem
-,

執筆者:

関連記事

Rails3.2でJasmineをつかってCoffeeScriptをテスト~jasminerice

    #261 Testing JavaScript with Jasmine (revised)   addyosmani.github.com/backbone-f

no image

Rails3.2でユーザー管理機能を追加2~Devise+AjaxDataTables

  前回 Rails3.2でユーザー管理機能を追加~Devise 参照 Railsでajaxなテーブルを使う~datatables   いままでAjaxでのデータ更新ができなかった …

no image

Rails3.2でajaxなフォルダツリーを導入する4~dynatree-rails & Drag’n’Drop

wwwendt.de/tech/dynatree/doc/dynatree-doc.html wwwendt.de/tech/dynatree/doc/samples.html 今日はドラッグアンドド …

Rails3.2.8でテーブル並び替えのテストを作る~cucumberと正規表現

前提 Railsのテーブル並び替えを実装する Rails3.2.8で自動テスト環境を整える〜cucumber+spork+guard 目次1 作戦(ストラテジー)2 have_contentの正規表現 …

Rails3.2でGoogle Calendarライクなカレンダーを使う〜fullcalendar-rails

目次1  fullcalendar-rails2 Hello fullcalendar3 オプション  fullcalendar-rails 2種類あるけど上の方を使った github.com/bok