在Sinatra的路线之间传递变量

我正在Sinatra网站上实现注册的smsvalidation,我得到了这个代码:

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

这将用户电话从发布请求中获取,而不是生成4位数代码,并通过获取请求向短信服务发送代码。 但是,页面没有重新加载,因为此时打开modal dialog,用户应该键入代码 。 打开模态的按钮同时使用以下代码通过Ajax发送post

 $(document).ready(function(){ $("#sendsms").click(function(){ var phone = $("#phone").val(); $.ajax({ url: "/coop", data: {"phone": phone}, type: "post" }); }); }); 

在客户端检查用户代码会很奇怪,这就是为什么我有这个行动路线:

 post '/coop/checkcode' do usrcode = params[:code] if code == usrcode redirect '/reg/success' else redirect '/reg/fail' end end 

但我不能只从密码路由中的第一条路径中输入代码 var。 但是我需要。

是否存在传递该变量或以其他方式实现此方法的任何可能方法?

先感谢您。

您应该考虑使用会话: 这里

首先在配置中:

 enable :sessions 

现在你得到:

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

 post '/coop/checkcode' do usrcode = params[:code] if session[:code] == usrcode redirect '/reg/success' else redirect '/reg/fail' end end