2011-09-12 5 views
2

Je suis nouveau à Ruby global (et à jQ et Ajax ainsi) mais j'essaie toujours de lire avant de poster.Passer une variable simple en utilisant jQ & Ajax à Ruby

Je n'ai pas pu envoyer une variable simple de jQuery à un contrôleur Ruby en utilisant Ajax (pour une transition en douceur).

Il est possible avec AJAX passer simple variable au contrôleur ruby?

Il est nécessaire, toute autre aide du langage de script comme PHP ou ASP.NET ??

Existe-t-il un autre moyen plus simple de faire cela?

controller.rb

def show_NuevaVista 
    app_info(@params['myparam']) 
    @show_text = @params['myparam'] 
    render :action => :test, :back => '/app' #test is a view that shows the global var show_text 
end 

view.rb

<button id="botonTweet" >More Tweets</button> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#botonTweet').click(function(slice) { 
    var stub = 1;        //variable to be sent 
     $.ajax({ 
     type: "POST", 
     url: "show_NuevaVista",   //method of the controller 
     data: { 
      "test": stub    //try to send this variable 
     }, 
     }); 
    }); 
}); 
</script> 

Mise à jour:

La seule façon son possible pour moi d'envoyer une variable est avec href et que la variable est déclarée en rubis.

<%= @texto = "LOL!" %> 
<%= link_to "Click Here!", :action => :show_NuevaVista,:query => {:myparam => @texto} %> 
+0

La façon inhabituelle Je l'ai fait en utilisant le code suivant: <% = @show_text%> <% = link_to "Cliquez ici!",: Action =>: show_NuevaVista,: query => {: myparam => @texto}%> – Martin

+0

À quoi sert cette ligne? les données ne sont pas définies. pour (var i = 0; i BNL

+0

Désolé, j'ai effacé un peu de code supplémentaire que j'avais, mais il a été corrigé maintenant. – Martin

Répondre

0

La façon dont vous avez la link_to & jQuery codé, après la ajax appellent exocute sera toujours le href. Vous pouvez effectuer les opérations suivantes:

<%= link_to("Click Here", "javascript:void(0);", :id => "botonTweet") %> 

Ou si vous voulez l'exécution href comme fallback, utilisez votre même code link_to et mettre à jour votre javascript return false après l'appel ajax:

$('#botonTweet').click(function(slice) { 
var stub = 1;        //variable to be sent 
    $.ajax({ 
    type: "POST", 
    url: "show_NuevaVista",   //method of the controller 
    data: { 
     "test": stub    //try to send this variable 
    }, 
    }); 
    //this is the key to avoid href redirect 
    return false; 
}); 
Questions connexes