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

執筆者:

関連記事

no image

Ubuntu server12.04でRails4とPostgreSQL9.3をつかう〜hstoreとか

目次1 準備2 rails new3 config/database.yml4 hstoreとarrayを試してみる 準備 Ubuntu server12.04にPostgreSQL9.3をインストー …

ActiveRecord使い方まとめ

By: North Carolina National Guard – CC BY 2.0 ActiveRecord入門|ドットインストールをみて個人的まとめ ActiveRecord4の …

Rails3.2でページネーションをTwitter Bootstrapに対応させる~kaminari

github.com/amatsuda/kaminari 目次1 Gemfile & bundle2 設置3 テーマの作成 Gemfile & bundle [crayon-599df …

Ruby+guardでSass+Compass+CoffeeScriptの自動コンパイル環境を整える

    Ubuntu12.04.1でCoffeeScriptの自動makeとブラウザの自動リロード~guard-coffeescript すでにCoffeeScriptを自動Mak …

no image

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

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