Un jour, une gem

19/03/2012

Lundi c'est Rabl

gem install rabl

Un autre générateur de JSON

Dans les épisodes précédents nous vous avons présenté des gems comme JBuilder ou acts_as_api. Aujourd’hui une gem tout aussi cool, avec encore plus de fonctionnalités.

Comme pour JBuilder vous devrez créer des templates pour répondre à vos demandes d’API. Par exemple :

show.rabl

object @posts
attributes :id, :title, :subject

Sans oublier le bloc respond_to dans votre controller :

def show
  @post= Post.find(params[:id])
  respond_to do |format|
    format.html
    format.json { render json: @post}
  end
end

Envie de rajouter autre chose qu’un des attributs de votre model ? On peut utiliser la méthode node comme ceci :

object @posts
attributes :id, :title, :subject
node(:edit_url) { edit_article_url(@post) }

On aimerai bien avoir la même chose pour l’action index de notre controller, mais comme on a la flemme de tout réécrire, on utilise la méthode extends :

index.rabl

collection @posts

extends "posts/show"

Et encore plein d’autres belles choses dans la documentation, bonne lecture !

Les liens utiles