我正在使用 Ruby、Sinatra 和 Postgres。我正在使用 Plivo api。
有一个搜索页面 (search.erb),其中 jQuery 脚本从搜索框中收集数据,然后将其传递给 api 查询。
这是jQuery:
$(".localsearch").click(function() {
var country_iso = $("#local").val();
var region = $("#region").val();
var prefix = $("#prefix").val();
alert(country_iso + ' ' + region + ' ' + prefix)
$.ajax({
type: "GET",
url: "/local/data",
data: { 'country_iso' : country_iso, 'region' : region, 'prefix' : prefix },
success: function(data){
window.location.href = '/local'
}
});
});
如果 url 是“/local/data”,则传递参数,但 Sinatra 无法识别作为 local.erb 的 erb 页面,或者如果 url 只是“本地”,则不传递参数(我已经在控制台中检查了这一点) 所以结果不会呈现在 local.erb 页面上。
红宝石代码是:
get '/search' do
erb :search
end
get '/local/data' do
#country_iso = 'US'
#region = 'NY'
#prefix = '646'
country_iso = params[:country_iso]
region = params[:region]
prefix = params[:prefix]
p = RestAPI.new(AUTH_ID, AUTH_TOKEN)
params = {'country_iso' => country_iso, 'region' => region, 'prefix' => prefix, 'limit' => 1}
warn params.inspect
response = p.get_number_group(params)
obj = response.last
pp obj
@stock = obj["objects"][0]["stock"]
@region = obj["objects"][0]["region"]
@prefix = obj["objects"][0]["prefix"]
@voice_rate = obj["objects"][0]["voice_rate"]
erb :local
end
我不确定这里到底出了什么问题,但我怀疑问题出在传递参数的路线上,如上所述。我想我需要一个单独的部分来编写应该发生的事情,但我不知道该怎么称呼它或如何将它与 get '/local' do 部分分开/包含。
例如,在上面的 ruby 代码段中,如果 erb 是 local.erb,那么顶部是否应该是 '/local' 而不是 'local/data'?如果只是“本地”,那么我如何传递参数?
一如既往地非常感谢所有评论和帮助。谢谢你。jquery 或 api 调用没有问题,所以困难不在于那里。