在我的rails / heroku网络应用程序中,我调用了一个外部API,(在视图中使用了json结果)。目前该调用是在控制器中,但我遇到的问题是外部源非常慢,导致页面加载缓慢,甚至超时。我认为我不能使用常规的jquery / js / ajax,因为 API调用包含我的私有API密钥。如何异步拨打此电话?
1)我可以在控制器中进行异步调用,或者是 2)从视图拨打电话时,我可以隐藏我的密钥吗? 3)有更好的方法来解决这个问题吗?
感谢。
答案 0 :(得分:0)
考虑添加另一条路由来代理长请求。从您的角度来看,使用AJAX加载该路由并在返回时将结果添加到DOM。在那段时间之前,你可以显示一个花哨的微调器 gif或像 loading ...
例如
...
get '/long_calls/show' => 'long_calls#show'
get '/long_calls/show2' => 'long_calls#show2'
...
class LongCallsController < ApplicationController
def show
@message = "*Please Wait*"
end
def show2
@message = LongCall.thing_that_takes_a_long_time
end
end
<script>
$(function) {
$.get("show2");
}
</script>
<div id='lazyload'>
<%= @message %>
</div>
$("#lazyload").html("<% escape_javascript @message %>");