Petite question ajax/xhr

Bonjour,

J’essaye actuellement de recoder un système de spoiler sur une vue.

J’ai ce code dans ma vue index.html.erb

<%= link_to_remote “spoiler”, :url => { :action => ‘spoiler’…

Dans mon controller :

def spoiler
if request.xhr?
calculate textespoiler
end
end

Dans mon spoiler.rjs :

page.visual_effect :toggle_appear… (pour gerer l’effet visuel du
spoiler)
et

page.insert_html :bottom, “id_div”, “textespoiler” (pour gerer
l’insertion du spoiler dnas la bonne balise)

Mon problème est que je voudrais que la requete xhr ne s’execute qu’une
seule fois, et quand l’utilisateur clique sur le bouton “spoiler” une
deuxième fois que le spoiler s’affiche mais sans être recalculé (d’ou
l’interet d’ajax).

D’autre part, mon spoiler s’affiche autant de fois que je clique sur le
bouton (normal j’ai pas de conditions dans le insert_html). Je passerais
à terme dans un systeme de render :partial je pense.

Une idée ?

Bonne journéé.

2008/8/7 Guillaume M. [email protected]:

def spoiler
if request.xhr?
calculate textespoiler
end
end

def spoiler
if request.xhr?
calculate textespoiler if params[:cache]
end
end

Dans mon spoiler.rjs :

page.visual_effect :toggle_appear… (pour gerer l’effet visuel du
spoiler)
et

page.insert_html :bottom, “id_div”, “textespoiler” (pour gerer
l’insertion du spoiler dnas la bonne balise)

page.visual_effect :toggle_appear
page.insert_html :bottom “id_div”, “textspoiler” unless params[:cache]
if params[:cache]
methode qui ajoute le param cache dans la partie qui fait la requete
xhr
end

Ca peux être une idée simple de cache.

Sinon tu as une bonne technique avec gestion de cache_page comme
indiqué dans un railscast[1]

[1] : http://railscasts.com/episodes/89-page-caching


Cyril M.

Merci beaucoup de ta réponse !
Je vais de ce pas faire un peu de cache.