2014-05-10 3 views
0

Je travaille sur la fonction de validation de sms sur le site de Sinatra. Et je suis arrivé ce code: Passer une variable de Ruby à JavaScript

post '/coop/sendcode' do 
    @code = Random.rand(1000..9999).to_s 
    phone = params[:phone].to_s 
    HTTParty.get('http://sms.ru/sms/send?api_id=' + api_id + '&to=' + phone + '&text=' + @code) 
end 

Et ce point de vue:

%form 
    %div.form-group 
    %label Phone 
    %input#phone.form-control{:name => "phone", :placeholder => "7 950 123 45 67"} 
    %button#sendsms.btn.btn-default{"data-toggle" => "modal", "data-target" => "#myModal"} Send 

Et ce JS:

$(document).ready(function(){ 
    $("#sendsms").click(function(){ 
     var phone = $("#phone").val(); 
     $.ajax({ 
     url: "/coop/sendcode", 
     data: {"phone": phone}, 
     type: "post" 
     }); 
    }); 
    $("#checkcode").click(function(){ 
     var serversCode = @code 
     var usersCode = $("#code").val(); 
     if (serversCode == usersCode) { 
     console.log("good: srv - " + serversCode + ", usr - " + usersCode); 
     } else { 
     console.log("bad: srv - " + serversCode + ", usr - " + usersCode); 
     } 
    }); 
    }); 

Après types d'utilisateur numéro de téléphone, il appuyez sur Envoyer bouton, qui ouvre la fenêtre modale (avec le bouton # code de vérification) où il peut taper un code de validation à partir de sms. Mais ce code ne fonctionne pas, et la question principale est de savoir comment passer @code variable de Ruby à JS?

Merci d'avance.

Répondre

1

Essayez d'utiliser ce petit bijou: https://github.com/gazay/gon-sinatra

Il vous permettra de définir le code dans le contrôleur comme ceci:

gon.code = @code 

et l'accès dans le javascript d'une manière similaire:

var serversCode = gon.code 
Questions connexes