我有一个包含用户站点列表的页面,我正在上面进行API调用以检查每个站点的状态。问题是它使页面需要永远加载,所以我希望加载页面,然后在使用 AJAX 或 jQuery 完成检查后更新该表元素。不过,我对AJAX或jQuery不是很好,我一直在阅读的所有Rails/Ajax教程似乎都更多地处理存储在数据库中的表单和数据。这是我的表元素:
我的观点的一部分
<td>
<% if HTTParty.get(site.domain + 'api')["status"] == "ok" %>
OK
<% else %>
Error
<% end %>
</td>
控制器操作加载视图
def sites_page
@sites = Site.where(user_id: current_user.id)
render 'sites_page'
end
如上所述,我如何单独进行此负载?我知道我还没有尝试过任何代码,但我真的不知道从哪里开始。
感谢您的帮助。
只需在窗口加载时将 AJAX 调用附加到 td,它将在页面呈现后稍后进行评估。AJAX 调用可以是这样的:
$(window).load(function() {
var target = $(".td-that-will-be-evauated-later")
url = target.data("url")
$.ajax({
url: url,
type: "GET",
dataType: "json",
success: function(result){
target.html(result.body)
},
error: function(xhr, status, error) {
$(target).html("error");
}
})
})
URL 应指向将获取特定用户信息的控制器操作,例如:
class UsersController < ActionController::Base
def fetch_info
@user = User.find(params[:id])
@response = @user.fetch_info
render json: {success: true, body: response.body}
end
end