gpt4 book ai didi

ruby-on-rails - 在 RoR 2.x 中使用 respond_to 通过 ajax 实现优雅降级

转载 作者:数据小太阳 更新时间:2023-10-29 08:06:36 25 4
gpt4 key购买 nike

我正在阅读关于使用 ruby​​ on rails 进行 Web 开发的 AWDR 一书,旧代码的一个问题是它没有使用 respond_to 来确保所使用的 View 是 javascript View 。现在在一些更新的示例中,我看到人们后来提到他们,在实现优雅降级时,使用 request.xhr?判断用户是否启用了 javascript,如果没有,则重定向用户。

我想知道您是否可以使用 respond_to 获得相同的行为,如果可以,这是否被认为是好的形式,为什么?

所以我想做的是:

def function
respond_to do |format|
format.js do
basic_stuff
end
format.html do
basic_stuff
user_redirect
end
end
end

它似乎确实有点违反了 DRY 原则,而且我可能遗漏了一些关于用户和服务器在这里如何交互的信息。老实说,API 文档并没有让我完全清楚。

最佳答案

你可以这样重构:

def function
basic_stuff # executed regardless of the mime types accepted
respond_to do |format|
format.html do
user_redirect
end
end
# will fall back rendering the default view - which you should ensure will be js
end

request.xhr? 查看请求的 X-Requested-With header (查看它是否包含“XMLHttpRequest”)。 respond_to 查看接受的 mime 类型。

您可以使用其中任何一种来实现某种优雅的降级。

但是您将无法使用xhr? 进行优雅降级,除非您的ajax 调用正在设置该 header (Prototype 会自动执行此操作)。

此外,respond_to 提供了更大的灵 active ,即发送 xml、json、js,无论它来自同一个 block 。

所以我建议在这里使用 respond_to

关于ruby-on-rails - 在 RoR 2.x 中使用 respond_to 通过 ajax 实现优雅降级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/149776/

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