【问题标题】:Ajax call not returning latest data from ActiveRecordAjax 调用未从 ActiveRecord 返回最新数据
【发布时间】:2021-09-23 01:17:18
【问题描述】:

我的 ajax 调用无法从 Active Record 返回有关应用程序最新版本的最新信息时遇到问题。我在单击链接时运行 ajax 调用以运行控制器方法来更新包含指向外部下载处理程序的链接的类变量,但它似乎返回了前一个。当我刷新页面时,它会返回最新的页面,但有点违背了 ajax 调用的目的。

这里是 .html.erb 方法

$('.download-link').on('click', function(event) {
            var id = this.id;
            $.ajax({
                url: "/updater",
                type: "GET",
                success: function (result) {
                    window.location.href = "<%= @version.download_link %>"
                }
            })
        })

这里是路由到 /updater 的控制器方法:

def update
  @version = AppVersion.find_by(app_type: "AppType", is_active: true)
end

如何确保它从 Active Record 获取最新版本数据而无需重新加载页面?

【问题讨论】:

    标签: ruby-on-rails ajax activerecord


    【解决方案1】:

    当生成.js.erb(其中包含ajax获取最新下载链接)时,Rails服务器渲染会使用当前变量来填充那些占位符,比如"&lt;%= @version.download_link %&gt;",这样之前的版本(这里是@version)将使用并修复 ajax 代码:window.location.href = current-download-link,这就是为什么它总是返回前一个。

    您需要更新以使用result - ajax 调用的成功响应数据,类似这样

    success: function (result) {
      window.location.href = result.download_link
    }
    

    【讨论】:

      猜你喜欢
      • 2012-04-11
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多