2012-08-01 2 views
1

J'utilise les rails version 3.2.6 et j'essaie de passer une variable Javascript à une autre page "Test10". J'ai le code suivant dans la vue:Passer les variables JavaScript au contrôleur Rails

<script> 
var message = "hello world!"; 
</script> 

<%= link_to "Go!", Test10_path(), :with => "'message='+ message" %> 

Le paramètre n'est pas transmis à Test10. Je le suivais dans le contrôleur test10:

def Test10 
    @hello = params[message] 
end 

Est-ce la bonne façon de passer une variable Javascript pour mon contrôleur de rails? Ça ne marche pas. J'apprécierais n'importe quel pointeur. Merci!

Répondre

5
<%= link_to "Go!", Test10_path(), :id => "my_link" %> 


<script> 
    var message = 'test'; 
    var url = $('#my_link').attr('href') + '?message=' + message; 
    $('#my_link').attr('href', url); 
</script> 

Quelque chose comme cela devrait fonctionner. Bien que la plupart du temps, il est préférable de passer des paramètres en utilisant des formulaires à la place ...

+0

Merci @Anthony. Ça a marché! Quelle est la meilleure ressource pour apprendre à passer des paramètres à l'aide de formulaires? Et pourquoi c'est mieux? Merci encore!! – user1388066

+0

Si vous voulez passer des valeurs de Javascript, il suffit d'apprendre un peu de jQuery. Vous devez également apprendre à construire des formes avec des rails: http://guides.rubyonrails.org/form_helpers.html –

+0

Merci beaucoup @Anthony !! – user1388066

0

Vous ne pouvez pas faire cela. JavaScript et Ruby s'exécutent dans des contextes complètement différents, JavaScript sur le client et Ruby sur le serveur.

En général, si vous souhaitez communiquer une valeur du client au serveur, vous devez le faire en le publiant dans un formulaire ou dans le cadre d'une chaîne de requête, ou via AJAX.

Dans votre exemple spécifique, vous devrez écrire du code JavaScript qui sélectionne la balise d'ancrage et ajoute le contenu de la variable message à la chaîne de requête de la balise d'ancrage. Quelque chose comme ce qui suit:

<script> 
    var message = "hello world!"; 

    // Select your anchor tag 
    var link = $('a#my-link'); 

    // Append your message to the link's href attribute 
    link.attr('href', link.attr('href') + "?message=" + message); 
</script> 
+0

Merci @meagar pour votre aide! – user1388066

Questions connexes