Page.insert_html et page.visual_effect

Bonjour,

Je n’arrive pas à comprendre pourquoi deux lignes de code
trèssimilaire ne fonctionnent pas de la même manière.

page[@proposition].insert_html :bottom, :partial => @proposition
page[@proposition].visual_effect :highlight, :duration => 2.0

La deuxième ligne marche mais pas la première.

Alors que pourtant cela semble assez proche : visual_effect(name, id =
nil, options = {})

et insert_html(position, id, *options_for_render)

Je vous remercie,

Pierre

Pierre :

Je n’arrive pas à comprendre pourquoi deux lignes de code très
similaire ne fonctionnent pas de la même manière.

page[@proposition].insert_html :bottom, :partial => @proposition
page[@proposition].visual_effect :highlight, :duration => 2.0

La deuxième ligne marche mais pas la première.

Alors que pourtant cela semble assez proche :

visual_effect(name, id = nil, options = {})

jolie signature, en effet. C’est une méthode de quelle classe ?

et insert_html(position, id, *options_for_render)

jolie signature aussi. C’est une méthode de quelle classe ?

Question subsidiaire, c’est un objet de quelle classe, un
page[@proposition] ?

– Jean-François.


Ruby ( http://www.rubyfrance.org ) on Rails ( http://www.railsfrance.org
)

Jordan :

C’est du RJS en tout cas.

J’arrive pas a comprendre non plus mais ça peut peut-être t’éclairer
Jean-François :slight_smile:

Ok, je pose une nouvelle question alors :

Dans le sujet, Pierre parle de page.insert_html et page.visual_effect,
est-ce que c’est similaire à page[@proposition].insert_html et
page[@proposition].visual_effect ?

ça ressemble, certes, mais est-ce que c’est la même chose ?

– Jean-François.


Ruby ( http://www.rubyfrance.org ) on Rails ( http://www.railsfrance.org
)

Les deux méthodes appartiennent à la même classe :
http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper/JavaScriptGenerator/GeneratorMethods.html

La méthode [] aussi.

Je mets le code en entier :

      render(:update) do |page|
          page[@proposition].insert_html :bottom, :partial =>

@proposition
page[@proposition].visual_effect :highlight, :duration
=> 2.0
end

Merci

C’est du RJS en tout cas.
J’arrive pas a comprendre non plus mais ça peut peut-être t’éclairer
Jean-François :slight_smile:

Bonjour,

La deuxième ligne marche mais pas la première.

“ça ne marche pas” c’est un peu court comme explication. Si c’est
l’interprétation de cette ligne qui fait une erreur ? dans ce cas il
nous faudrais avoir le message d’erreur. Si c’est le javascript généré
qui ne marche pas (c’est à dire que l’effet désiré n’arrive pas) il
serais bien d’utiliser un outils de debug comme Firebug par exemple pour
en savoir plus ou au moins nous donner le javascript généré pour voir à
quoi il ressemble (ainsi que le code HTML sur lequel il doit agir).

Sinon pour Jean-François, la méthode [] de page est documenté ici :
http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper/JavaScriptGenerator/GeneratorMethods.html#M000974

En fait page[@proposition] est remplacé par $(‘proposition_id’) ou
quelque chose y ressemblant suivant le contenu de @proposition :slight_smile:

Yann.


Yann Lugrin
[email protected]

http://www.sans-savoir.net

Yann :

Sinon pour Jean-François, la méthode [] de page est documenté ici :
http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper/JavaScriptGenerator/GeneratorMethods.html#M000974

En fait page[@proposition] est remplacé par $(‘proposition_id’) ou
quelque chose y ressemblant suivant le contenu de @proposition :slight_smile:

Ok. Je vais faire quelques reformulations :

1/ Si on reprend l’hypothèse de Pierre, au code :

page[@proposition].insert_html :bottom, :partial => @proposition

on utilise une méthode dont la signature est :

visual_effect(name, id = nil, options = {})

Quelqu’un peut me dire lors de l’appel, que vaut name, id et
options ?

Pareil pour :

page[@proposition].visual_effect :highlight, :duration => 2.0

et insert_html(position, id, *options_for_render), que vaut position,
id et options_for_render ?

2/ 2e reformulation.

“visual_effect, insert_html et [] appartiennent à la même classe.”

Supposons que j’ai une variable soupe qui référence un objet de
classe Soupe, je sais qu’il y a 3 méthodes d’instance #courgettes,
#poireaux, #potiron.

soupe.courgettes # ok
soupe.poireaux # ok
soupe.potiron # ok

Que fait soupe.courgettes.poireaux ?

3/ "En fait page[@proposition] est remplacé par $(‘proposition_id’) "

mais moi, je reste côté Ruby, pour l’instant le JS généré ne
m’intéresse pas.

c’est un objet de quelle classe, un page[@proposition] ?

→ Quel objet est retourné de l’appel de la méthode []

(décrit ici, d’après ce qu’on me dit :
http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper/JavaScriptGenerator/GeneratorMethods.html#M000974
)

lors de page[@proposition] ?

– Jean-François.


Ruby ( http://www.rubyfrance.org ) on Rails ( http://www.railsfrance.org
)

Bonjour,

L’erreur est :

RJS Error

Type Error : $(“proposition_202”).insertHtml is not a function

Merci beaucoup.

PS : par contre page.insert_html :bottom,
“proposition_#{@proposition.id}” marche parfaitement

ma fraise :

Pareil pour :

page[@proposition].visual_effect :highlight, :duration => 2.0

et insert_html(position, id, *options_for_render), que vaut position,
id et options_for_render ?

Bon j’ai interverti, mais vous avez compris le sens de ma question.

ça m’apprendra à pas me relire.

-- Jean-François.

Sent from my Oric Atmos


Ruby ( http://www.rubyfrance.org ) on Rails ( http://www.railsfrance.org
)