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
-,

執筆者:

関連記事

RailsにTwitter Bootstrapのフォームを設定する~simple_form

環境 RailsにTwitter Bootstrapを設定する~twitter-bootstrap-rails github.com/plataformatec/simple_form 目次1 Gem …

Rails3.2とBackbone.jsでGoogle CalendarライクなカレンダーにCRUD~fullcalendar-rails

目次1 前回2 READ ~データベースからイベントを読み込んでカレンダーに表示する3 CREATE~カレンダーからイベントを登録する4 UPDATE1~カレンダーのイベントをクリックしてイベントを編 …

no image

Railsで使える便利なナビゲーション~simple-navigation

Rails3.2でJasmineをつかってBackbone.jsのModelをテストしてみる

  By: Glory Cycles   Developing Backbone.js Applications addyosmani.github.com/backbone-fu

Rails4.2で簡単にマテリアルデザインを使えるmatelializeを試してみた〜matelialize

By: Basheer Tome – CC BY 2.0 目次1 マテリアルデザイン2 matelialize3 Gemfile4 application.scss5 applicatio …