Ajax 调用未从 ActiveRecord 返回最新数据
Posted
技术标签:
【中文标题】Ajax 调用未从 ActiveRecord 返回最新数据【英文标题】:Ajax call not returning latest data from 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 获取最新版本数据而无需重新加载页面?
【问题讨论】:
【参考方案1】:当生成.js.erb
(其中包含ajax获取最新下载链接)时,Rails服务器渲染会使用当前变量来填充那些占位符,比如"<%= @version.download_link %>"
,这样之前的版本(这里是@version)将使用并修复 ajax 代码:window.location.href = current-download-link
,这就是为什么它总是返回前一个。
您需要更新以使用result
- ajax 调用的成功响应数据,类似这样
success: function (result)
window.location.href = result.download_link
【讨论】:
以上是关于Ajax 调用未从 ActiveRecord 返回最新数据的主要内容,如果未能解决你的问题,请参考以下文章
Ajax / PHP:调用正常,但未从 PHP 发出警报结果
控制器 ActionResult 方法参数未从 ajax 调用接收表单数据