javascript - 将变量从 Ruby 传递到 JavaScript

标签 javascript jquery ruby ajax sinatra

我正在 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/

相关文章:

javascript - 用于将 HTML 转换为 Markdown 的 Jquery 插件

ruby - 如何在不使用While的情况下删除左侧重复的字符串?

ruby - 如何使用 Ruby 获取系统信息?

ruby - 如何使用 ruby​​ 将 unicode 添加到 ID3 标签?

javascript - 如何使用 Node js Express 渲染 View 模板

javascript - Lodash 映射对象上的键和值

javascript - 成功 ? 'sent' : 'failed' defaults to 'sent' for success = null. 为什么?

javascript - 使用jquery选择html表中输入元素的值

javascript - jQuery 淡入淡出图像循环

javascript - 第二个 AJAX 调用不起作用