问题标签 [turbo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
381 浏览

turbo - 为什么 Turbo 不尊重 link_to 方法: :post?

长期以来,Railsmethod: :post在 helper 中提供了一个选项link_to:当给出选项时,Rails 会拦截点击并发出 POST 请求,而不是默认的 GET 请求。

然而,由于一些未知的原因,这在 Rails 7 中不起作用:尽管添加method: :post到我的link_to助手,Rails 发送了一个 GET 请求(不是一个 POST 请求)。我认为 Turbo 应该会处理它,但它似乎没有发生。

这是您可以复制的非常简单的步骤:

现在localhost:3000/books从您的网络浏览器访问,然后单击第二个“新书”链接。我希望得到一个错误(毕竟,我没有配置正确的 POST 路由),但不幸的是,Rails 发出 GET 请求 - 而不是 POST 请求,因为它应该有:

为什么会这样?Turbo 不应该拦截链接,并且像 Rails UJS 过去所做的那样,发送 POST 请求吗?

0 投票
0 回答
75 浏览

ruby-on-rails - Rails 编辑表单更新查询错误(turbo 帧)

当我尝试更新服务并提交所有更新时,除了带有旧值的 SQL 查询的名称。

编辑表格:https ://i.stack.imgur.com/YSZuD.png

如果我提交这个,我会得到这个:

ref获取新值但name搜索“Tratamento 2”(旧值)。

/services/_edit.html.erb

services_controller.rb

服务参数:

0 投票
1 回答
92 浏览

ruby-on-rails - 渲染时删除链接“data-turbo-frame”属性

按照下面的教程,我正在使用 Stimulus 和 ActionText 来处理“提及”;

使用 ActionText 的用户 @提及

显示 actiontext 内容时,每个“提及”的部分内容都是从 json.builder 文件呈现的。

我遇到的问题是 actiontext 内容在 turbo 框架内,并且提及部分包含一个链接。因此我需要添加以下属性来转义涡轮帧:

由于某种原因,此属性在渲染时被从页面中剥离。(使用 html.slim)。

结果 HTML:

0 投票
0 回答
58 浏览

hotwire-rails - Rails 控制台销毁操作,但不会渗透到应用程序并通过 turbo 流进行处理

表单包含销毁按钮

控制器以预期的方式响应

但是,在控制台中:

不会影响浏览器,实际上日志中没有注册任何内容。刷新浏览器确实会根据数据库对象重置一些东西。

这是运行 rails 7.0.1 和 ruby​​ 3.1.0。

产生这种意想不到的行为的错误是什么?

0 投票
1 回答
63 浏览

ruby-on-rails - Rails turbo_frame 未被识别

使用 Rails 7 turbo 流作为完全替代品的上下文测试 rails-ujs 功能。
类嵌套结构如下:

一页文章可能会创建caritems,每篇文章一个。
每篇文章都需要可创建、可更新、可删除(因此可以为不断改变主意的用户重新创建)。
因此,该页面对每篇文章都有一个块

部分然后调用涡轮帧:

呈现的 HTML 确实调用了 dom_ids 并按预期呈现:

控制器:

如果@cartitem 有效,则进程运行并按预期呈现:

但是,在使用空值提交时,为了测试验证,会出现意外结果:

正如预期的那样,事务回滚。但是,响应是不可处理的实体。
并且返回不是create.turbo_stream.erb声明要做的,即如果 caritem 为 nil 则重新渲染部分。
*注意:elserespond_to 块的部分在引用和不引用 turbo_stream 的情况下都进行了尝试,结果相同。

相反,返回的xhr响应是在开发模式下返回的错误的 HTML 页面。

浏览器控制台还抱怨

这是不真实的,因为 HTML 仍然挥之不去: <turbo-frame id="article_1"></turbo-frame>

需要做些什么来正确处理错误,将表单部分呈现在正确识别的位置?

0 投票
1 回答
24 浏览

ruby-on-rails - 将淡入淡出设置为 turbo_stream

Rails UJS 有一个紧凑性。在js.erb文件的单行中,调用 dom_id,部分 AND 给它一些交互(以极简主义的方法确认对象的变化)。调用 jQuery 库的示例。

为了消除 UJS 和对 jQuery 的依赖,在 turbo 流上的
vanilla JS 中实现等价物的最简洁的方法是什么?.fadeTo('slow',1)

0 投票
1 回答
145 浏览

ruby-on-rails - 如何禁用 Rails 应用程序中所有表单的 Hotwire / Turbo(Turbolinks 替代品)?

在 Rails 7 中,Turbolinks 被 Hotwire / Turbo 取代。这会修补 Web 链接,使它们成为 AJAX 样式的请求,就像 Turbolinks 所做的那样,而且还修补了表单。总的来说,我们发现这破坏了我们的应用程序。

  • 已经附加了某种 JS 行为的表单会发生冲突。
  • 标准 Rails 错误处理习惯用法 - “设置flashrender :new/ render :edit” - 令人惊讶地打破;必须添加status: :unprocessable_entity和交叉手指。
  • 如果处理表单提交的控制器重定向到一个包含补丁锚 ( ...#foo) 的 URL,Turbo 会删除它。

最后,data: {turbo: false}将代码分散到整个代码库中才有意义。更糟糕的是,我们使用的是 SimpleForm,所以这变得更加麻烦html: {data: {turbo: false}}

有没有办法 _globally为表单禁用 Turbo (理想情况下,所有表单,无论其来源如何 - 请让<form>标签和其中的所有内容完全独立)但保持其其余行为不变?

0 投票
2 回答
252 浏览

ruby-on-rails - 如何在带有 Turbo 的 Rails 中使用 button_to 调用确认提示

以前在 Rails 中使用button_to标签时,可以使用这样的确认对话框

data: { confirm: 'Are you sure?' }是 @rails/ujs 库在后台使用的 Rails 魔术数据属性

在 Rails 7 之后,默认情况下不再启用此库。而不是这个 Rails 使用 Turbo 库

现在这段代码不起作用

官方Rails 文档Turbo 手册中没有信息

我试过的

但是没有结果

我在 SO 上没有找到任何解决方案,但在 Hotwire论坛上找到了。此解决方案具有刺激作用。我只是稍微改进一下

它可以工作,但是很难,而且看起来很丑,而且我们习惯了 Rails 很酷

0 投票
1 回答
35 浏览

flask - 我可以离线使用 hotwired turbo.js 吗?

我正在尝试在我的 python 烧瓶应用程序中使用 turbo-flask。它尝试下载 turbo.js 但失败了,因为我没有使用互联网连接。我想过将 js 文件直接插入到我的项目中,但在任何地方都找不到。可以离线使用吗?

0 投票
0 回答
40 浏览

ruby-on-rails - Rails Turbo 不会触发 turbo:load 事件

turbo:load 事件在 turbo 访问后不会被触发(正如文档所说的那样)。它在初始整页加载后按预期工作。我可以捕捉到“turbo:before-fetch-response”事件,但我对 turbo:load、:render、:frame-render、:frame-load 没有运气。

我的 turbo_stream 请求采用格式 TURBO_STREAM 来销毁附件。控制器响应为

我正在返回两个涡轮流,其更新和删除操作按预期工作:

(注意:这是另一篇文章的一个亮点。在我的情况下提出的解决方案不起作用,因为完整属性仅适用于HTML img 元素。)(我正在使用@hotwired/turbo@^7.1.0,@在 Rails 7.0.1 中的 hotwired/turbo-rails@^7.1.1)