使用 Ajax 或 jQuery 使 Rails App Load 中的表元素与页面分开



我有一个包含用户站点列表的页面,我正在上面进行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