Nouveau gem : ambition

Ruby No Comments »

Ambition est un des gems pour Ruby on Rails qui a le vent en poupe. Son utilité est de complètement éliminer le codage SQL dans vos requêtes à la base de données.
Par exemple avec active record il est fréquent de trouver ceci :
[ruby]
@users = User.find(:all, :conditions=> »nom != ‘Toto’ », :o rder=> »nom ASC »)
[/ruby]

Avec ambition on aurait :
[ruby]
User.detect { |u| u.nom != ‘Toto’}.sort_by(&:nom)
[/ruby]

Ce code est plus agréable à lire et plus « Ruby »

Pour installer ambition :
[shell]
gem install ambition -y
[/shell]

Je vous conseille la lecture du site de l’auteur pour mieux comprendre les avantages …

Un peu de repos … en Grèce !

SoliSoft No Comments »

Bon voilà, je vais m’éloigner d’un ordinateur pendant 15 jours … Et je vais en profiter pour vraiment me reposer et profiter de ma petite famille.

Vacances en grèce

Si vous rencontrez des problèmes (Site Internet ne répondant plus par exemple), merci de contacter Mediatisse 04 99 91 08 82.

Retour derrière un ordinateur prévu le 24 Septembre 2007

Comment paginer avec une collection existante ?

Bloc Note, Ruby No Comments »

J’ai eu un petit soucis avec le système de pagination de Ruby on Rails. En effet celui-ci ne propose pas de paginer une collection existante.

Ainsi :

[ruby]
@liens =Liens.find(:all, :includes=>tags, :conditions=> »tags.id IN (1,2,3) »)

[/ruby]
Ne peut pas être paginé avec la fonction paginate de Rails.

Pour pouvoir paginer une collection existante, il suffit d’ajouter cette fonction dans votre controlleur :

[ruby]
def paginate_collection(collection, options = {})
default_options = {:per_page => 10, :page => 1}
options = default_options.merge options
pages = Paginator.new self, collection.size, options[:per_page], options[:page]
first = pages.current.offset
last = [first + options[:per_page], collection.size].min
slice = collection[first...last]
return [pages, slice]
end

[/ruby]

Et ensuite, l’utiliser comme ceci :

[ruby]
liens = Liens.find(:all, :includes=>tags, :conditions=> »tags.id IN (1,2,3) »)
@pages, @liens = paginate_collection liens, :page=> params[:page]
[/ruby]

Et là magie !

Ce bout de code a été trouvé à l’adresse suivante :
http://snippets.dzone.com/posts/show/389

Il existe aussi le plugin will_paginate
Ce plugin devrait être intégré à Ruby on Rails 2.0… donc à suivre de près.

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Connexion