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でOAuthを使うには~OmniAuth

By: Freenerd – CC BY 2.0   github.com/intridea/omniauth   目次1 OmniAuthの受け持つ役割2 Rails …

Rails4で複雑な検索〜Ransack

By: eric molina – CC BY 2.0 株価データをつかって複雑な絞り込み検索ができるようにしてみた データは、こちらのサンプルを使わせていただいた datawarehou …

Railsでチェックボックスで複数選択するとき〜check_box_tag

By: Luca Masters – CC BY 2.0 目次1 問題2 アンサー3 情報 問題 チェックボックスで複数選択可のフォームでうまくparamsにはいらない 例1 [crayo …

Rails5でコントローラーの記述を省略~inherited_resources

By: Simon Matzinger – CC BY 2.0 目次1 inherited_resources2 Gemfile3 使い方 inherited_resources inhe …

WindowsのRubyでxlsxファイルにアクセスする~roo

By: Hajime NAKANO – CC BY 2.0 目次1 rooのインストール2 rooを使ってみる(基本)3 シートを指定する4 セルの値を確認する5 行列を数える rooのイ …