Bonjour, debutant en Ajax sous ruby, je coince sur un petit probleme...
Voila j'ai une div que je souhaiterai mettre a jour en rajoutait du
texte a la suite, mais ca me remplace seulement le texte
Je vous mets tous le code concernant :
La vue :
<%= javascript_include_tag :defaults %>
<div id='themoney'></div>
<%= link_to_remote ("Show me the money!",
:url => { :action => 'getmoney' },
:update => 'themoney',
:postion => 'top')
%>
Le controleur est vide.
Et la vue de 'getmoney' est tout simplement
<p>Test</p>
Merci d'avance
on 02.05.2008 21:29
on 02.05.2008 22:09
Alfref Bouton wrote: > Bonjour, debutant en Ajax sous ruby, je coince sur un petit probleme... > > Voila j'ai une div que je souhaiterai mettre a jour en rajoutait du > texte a la suite, mais ca me remplace seulement le texte > > Je vous mets tous le code concernant : > > La vue : > > <%= javascript_include_tag :defaults %> > > > <div id='themoney'></div> > <%= link_to_remote ("Show me the money!", > :url => { :action => 'getmoney' }, > :update => 'themoney', > :postion => 'top') > %> > > Le controleur est vide. > > Et la vue de 'getmoney' est tout simplement > > <p>Test</p> > > Merci d'avance Si ton objectif est d'ajouter du texte à la suite du contenu existant utilise ceci dans ton controller : def getmoney render :update do |page| page.insert_html :bottom, 'themoney', "<p>Test</p>" end end Tu peux aussi place ton page.insert_html dans ta vue getmoney en la renommant en getmoney.rjs
on 02.05.2008 22:53
Tony Chauveau wrote: > Alfref Bouton wrote: >> Bonjour, debutant en Ajax sous ruby, je coince sur un petit probleme... >> >> Voila j'ai une div que je souhaiterai mettre a jour en rajoutait du >> texte a la suite, mais ca me remplace seulement le texte >> >> Je vous mets tous le code concernant : >> >> La vue : >> >> <%= javascript_include_tag :defaults %> >> >> >> <div id='themoney'></div> >> <%= link_to_remote ("Show me the money!", >> :url => { :action => 'getmoney' }, >> :update => 'themoney', >> :postion => 'top') >> %> >> >> Le controleur est vide. >> >> Et la vue de 'getmoney' est tout simplement >> >> <p>Test</p> >> >> Merci d'avance > > Si ton objectif est d'ajouter du texte à la suite du contenu existant > utilise ceci dans ton controller : > > def getmoney > render :update do |page| > page.insert_html :bottom, 'themoney', "<p>Test</p>" > end > end > > Tu peux aussi place ton page.insert_html dans ta vue getmoney en la > renommant en getmoney.rjs Lorsque je modifie le controleur ca m'ecrit : try { new Insertion.Bottom("themoney", "\u003Cp\u003ETest\u003C/p\u003E"); } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('new Insertion.Bottom(\"themoney\", \"\\u003Cp\\u003ETest\\u003C/p\\u003E\");'); throw e } J'ai deja eu ce probleme une fois, sans trouver de solution :( Pour ce qui est de mettre dans le .rjs j'ai dut sauté une etape, ca ne m'affiche rien du tout... Je dois juste mettre les 3 lignes dans getmoney.rjs ? Merci
on 03.05.2008 02:42
Bonjour,
Le fichier rjs ne doit contenir que la ligne
page.insert_html :bottom, 'themoney', "<p>Test</p>"
L'objet page est automatiquement crée par le framework.
Pour ce qui est du message :
try { new Insertion.Bottom("themoney",
"\u003Cp\u003ETest\u003C/p\u003E"); } catch (e) { alert('RJS error:\n
\n'
+ e.toString()); alert('new Insertion.Bottom(\"themoney\",
\"\\u003Cp\\u003ETest\\u003C/p\\u003E\");'); throw e }
Si je comprends bien, ce code apparait tel quel au lieu d'etre
executé ?
Je pense que "prototype" n'est pas chargé
Il faudrait placer la ligne ci-dessous
...
<head>
...
<%= javascript_include_tag :defaults %>
...
</head>
...
dans app/view/layouts/application.rhtml à l'interieur de la balise
<head>
on 03.05.2008 10:44
Bonjour,
Alors j'ai resolu un probleme, en effet, maintenant il prend en compte
mon .rjs, le probleme etait qu'il y avait toujours le .html.erb et quil
chargait donc celui la en priorite...
Par contre, il ne veut toujours pas m'interpreter le javascript :(
J'ai toujours le message :
try { new Insertion.Bottom("themoney",
"\u003Cp\u003ETest\u003C/p\u003E"); } catch (e) { alert('RJS error:\n\n'
+ e.toString()); alert('new Insertion.Bottom(\"themoney\",
\"\\u003Cp\\u003ETest\\u003C/p\\u003E\");'); throw e }
Je vous mets le code source de la page une fois generer, peut etre une
erreur que je n'arrive pas a voir ...
<html>
<head>
<script src="/javascripts/prototype.js?1202578156"
type="text/javascript"></script>
<script src="/javascripts/effects.js?1202578156"
type="text/javascript"></script>
<script src="/javascripts/dragdrop.js?1202578156"
type="text/javascript"></script>
<script src="/javascripts/controls.js?1202578156"
type="text/javascript"></script>
<script src="/javascripts/application.js?1202578156"
type="text/javascript"></script>
</head>
<body>
<div id='themoney'></div>
<a href="#" onclick="new Ajax.Updater('themoney', '/admin/getmoney',
{asynchronous:true, evalScripts:true}); return false;">Show me the
money!</a>
</body>
</html>
Et en bonus le code de la vue :
<html>
<head>
<%= javascript_include_tag :defaults %>
</head>
<body>
<div id='themoney'></div>
<%= link_to_remote ("Show me the money!",
:url => { :action => 'getmoney' },
:update => 'themoney',
:postion => 'top')
%>
</body>
</html>
Merci d'avance parceque la je n'arrive vraiment pas a voir d'ou vient le
probleme, et je debute en AJAX :(
on 03.05.2008 10:50
Alfref Bouton wrote: > Et en bonus le code de la vue : > > <html> > <head> > <%= javascript_include_tag :defaults %> > </head> > <body> > <div id='themoney'></div> > <%= link_to_remote ("Show me the money!", > :url => { :action => 'getmoney' }, > :update => 'themoney', > :postion => 'top') > %> > </body> > </html> > > Merci d'avance parceque la je n'arrive vraiment pas a voir d'ou vient le > probleme, et je debute en AJAX :( excuse moi, j'ai oublié de te dire d'enlever ceci dans ton link_to_remote : :update => 'themoney', C'est ton rjs qui fait la mise à jour, tu n'as donc pas besoin de la faire en retour de fonction
on 03.05.2008 10:52
2008/5/3 Alfref Bouton : > <div id='themoney'></div> > <%= link_to_remote ("Show me the money!", > :url => { :action => 'getmoney' }, > :update => 'themoney', > :postion => 'top') > %> à noter que tu as toujours la typo :postion au lieu de :position -- Jean-François. -- RailsCamp Paris le samedi 17 mai 2008 : http://rubyfrance.org/evenements/railscamp-paris
on 03.05.2008 10:52
En effet ca marche beaucoup mieux comme ca :) Merci je vais pouvoir avancer un peu :)