gpt4 book ai didi

ruby-on-rails - Rails Controller 检查 Turbolinks 是否请求

转载 作者:行者123 更新时间:2023-12-02 03:17:36 32 4
gpt4 key购买 nike

我正在开发一个使用 Turbolinks gem 的 Ruby on Rails 4 应用程序。我注意到,当单击链接时,布局仍然在服务器端呈现,但 Turbolinks JavaScript 只是从呈现的内容中获取正文。我的问题是在 Controller 方面是否可以确定是否通过 Turbolinks 发出请求。本质上,如果通过 Turbolinks 发出请求,我想将布局设置为 false,以免执行不需要的代码。在我的 ApplicationController 中,我已经有以下代码:

# Don't use layout when AJAX request
layout proc { |controller| controller.request.xhr? ? false: "application" }

如果我通过 jQuery 发出 AJAX 请求,此代码会阻止 AJAX 请求呈现 header ,但是当涉及 Turbolinks 时,它似乎没有执行任何操作。

最佳答案

对于 Turbo(Turbolinks 的后代),我找到的唯一解决方案是检查 formats.any?(:turbo_stream)。这是因为 Turbo 插入了一个“turbo-stream”接受 header 。

除非您使用 Frames,否则还会有一个“Turbo-Frame” header 。

它还会插入一个 CSRF token ,但我认为这不能保证该请求来自 Turbo。

关于ruby-on-rails - Rails Controller 检查 Turbolinks 是否请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18156075/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com