Voici un petit exemple d’utilisation de periodically_call_remote avec Bivouac.
Commencez par créer un nouveau projet :
bivouac test
Ajouter ensuite un controller et une action associée :
cd test
ruby script/generate controller periodically call
Modifiez la vue app/views/periodically/call.rb de la façon à obtenir le code suivant :
module Test::Views
def periodically_call
h1
"periodically_call_remote"
div( :id => "refresh-me", :style => "background-color: #eee;") do; end
periodically_call_remote( :update => ‘refresh-me’, :url => R(PeriodicallyCall), :frequency => 2 )
end
end
Dans cette vue, nous demandons, via le helper periodically_call_remote, à ce que le div d’id refresh-me (:update => ‘refresh-me’) soit mis à jour toutes les 2 secondes (:frequency => 2) par le contenu renvoyé par PeriodicallyCall (:url => R(PeriodicallyCall))
Ce qu’il faut savoir, c’est que periodically_call_remote utilise un appel de type POST. Donc dans app/controllers/periodically.rb nous gérerons via le GET l’accès à la vue app/views/periodically/call.rb et via le POST nous renverrons le contenu à mettre à jour :
module Test::Controllers
class PeriodicallyCall < R ‘/periodically/call’
def get
render :periodically_call
end
def post
Time.now
end
end
end
Vous remarquerez qu’il n’existe pas de render :text => “Bla bla bla” avec Bivouac. Il suffit de renvoyer directement le texte.
Avant de terminer, il ne faut pas oublier de charger les librairies JavaScript (prototype et script.aculo.us). Pour cela, ajoutez la ligne javascript_include_tag :defaults dans le head du layout app/views/layouts/default_layout.rb.
Voila, démarrez le server et connectez-vous sur http://localhost:3301/periodically/call, vous devriez voir une page avec la date, rafraîchie toute les 2 secondes…