2009-09-03 10 views
0

J'essaie de comprendre comment utiliser RJS pour permuter entre deux champs ... je sais comment remplacer les valeurs mais je n'arrive pas à comprendre comment le lire.rails rjs remplacement et valeurs de swap

Est-il impossible de lire des valeurs via RJS? Seulement pour remplacer?

<%= link_to_function "Swap" do |page| 
      #to_value = page[:currency_to].value 
      page[:currency_from].value = to_value 
      page[:currency_to].value = "test" 
     end %> 

http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper/JavaScriptGenerator/GeneratorMethods.html#M001664

Répondre

1

J'ai testé les deux éléments suivants.

<%= link_to_function "Swap", 'var tmp_frm = $("#currency_from").val(); 
           var tmp_to = $("#currency_to").val(); 
           $("#currency_from").val(tmp_to); 
           $("#currency_to").val(tmp_frm);'%> 

ou mieux encore

<%= link_to_function "Swap", 'var tmp_frm = $("#currency_from").val(); 
           $("#currency_from").val($("#currency_to").val()); 
           $("#currency_to").val(tmp_frm);'%> 

en fonction de votre code html, vous devrez peut-être supprimer les symboles de livre

<%= link_to_function "Swap", 'var tmp_frm = $("currency_from").value; 
             var tmp_to = $("currency_to").value; 
             $("currency_from").value = tmp_to; 
             $("currency_to").value = tmp_frm;'%> 
+0

Ah, super. C'est ce qu'il a fait. ou presque, l'idée était juste, mais pour une raison ou pour une autre, ni l'un ni l'autre n'a fonctionné, j'ai dû le modifier légèrement. Merci! – holden

0

Je ne sais pas grand-chose à propos de prototype ou RJS, mais un rapide coup d'oeil à l'API prototype montre un getValue(). Je pense que cela a à voir avec page[:currency_to] retournant un élément prototype, par opposition à un élément DOM.

Peut-être essayer de remplacer

to_value = page[:currency_to].value 

avec

to_value = page[:currency_to].getValue() 

Pouvez-vous utiliser juste ce que vous voulez javascript dans des fichiers RJS? Ma conjecture est non, puisque c'est Ruby 'rendu' Javascript.

La section de l'API Rails à laquelle vous avez lié est un peu trompeuse je pense. Ils ne semblent pas se référer à une «valeur» réelle, ils utilisent simplement la valeur comme le nom à passer au bloc.

+0

ouais ... Non, il ne semble pas travail. C'est très facile de mettre les choses en place et de faire bouger les choses, mais lire les choses semble difficile. Je n'arrive pas à trouver d'exemples. – holden

0
<%= link_to_function "Swap", 'var tmp_frm = $("currency_from").value; 
             var tmp_to = $("currency_to").value; 
             $("currency_from").value = tmp_to; 
             $("currency_to").value = tmp_frm;'%> 
Questions connexes