我正在 Sinatra 网站上开发短信验证功能。我得到了这个代码:
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
这个 View :
%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
还有这个 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);
}
});
});
用户输入电话号码后,按发送按钮,该按钮将打开模式窗口(带有button#checkcode),他可以在其中输入短信验证码。但这段代码不起作用,主要问题是如何将 @code 变量从 Ruby 传递到 JS?
提前谢谢您。
最佳答案
尝试使用这个 gem:https://github.com/gazay/gon-sinatra
它将允许您在 Controller 中设置代码,如下所示:
gon.code = @code
并以类似的方式在 javascript 中访问它:
var serversCode = gon.code
关于javascript - 将变量从 Ruby 传递到 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23586709/