Un jour, une gem

05/04/2012

Jeudi c'est Ajaxful Rating

gem install ajaxful_rating

Pluie d’étoiles en prévision

Aujourd’hui une gem qui me donne un prétexte pour placer cette phrase : “Ton père est un voleur, il a volé toutes les étoiles du ciel pour les mettre dans tes yeux” !

Passons aux choses sérieuses. Une fois la gem installée on utilise le générateur (veillez à utiliser la bonne branche si c’est pour une application fonctionnant avec Rails 3 et plus) :

rails generate ajaxful_rating UserModelName

Maintenant, comme à l’accoutumée, on ajoute quelques méthodes à nos models :

ajaxful_rateable :stars => 10, :dimensions => [:speed, :beauty, :price]

À mettre dans le model qui va être noté. Et pour les options :

  • :stars pour le nombre d’étoiles
  • :dimensions on précise tout ce qui peut être noté pour un même model par exemple une voiture : son état, sa vitesse etc.

Le model de l’utilisateur devra avoir cette méthode :

ajaxful_rater

Pour que ça marche il faut une action dans le controller aussi :

def rate
  @model = LeModel.find(params[:id])
  respond_to do |format|
    if @model.rate(params[:stars], current_user, params[:dimension])
      format.js { render :partial => "rating" }
    else
      format.js { render :partial => "rating" }
    end
  end
end

Et dans votre vue :

ratings_for @model, current_user

Voilà, amusez-vous bien !

Les liens utiles