问题标签 [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.
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 请求吗?
ruby-on-rails - Rails 编辑表单更新查询错误(turbo 帧)
当我尝试更新服务并提交所有更新时,除了带有旧值的 SQL 查询的名称。
编辑表格:https ://i.stack.imgur.com/YSZuD.png
如果我提交这个,我会得到这个:
ref
获取新值但name
搜索“Tratamento 2”(旧值)。
/services/_edit.html.erb
services_controller.rb
服务参数:
ruby-on-rails - 渲染时删除链接“data-turbo-frame”属性
按照下面的教程,我正在使用 Stimulus 和 ActionText 来处理“提及”;
显示 actiontext 内容时,每个“提及”的部分内容都是从 json.builder 文件呈现的。
我遇到的问题是 actiontext 内容在 turbo 框架内,并且提及部分包含一个链接。因此我需要添加以下属性来转义涡轮帧:
由于某种原因,此属性在渲染时被从页面中剥离。(使用 html.slim)。
结果 HTML:
hotwire-rails - Rails 控制台销毁操作,但不会渗透到应用程序并通过 turbo 流进行处理
表单包含销毁按钮
控制器以预期的方式响应
但是,在控制台中:
不会影响浏览器,实际上日志中没有注册任何内容。刷新浏览器确实会根据数据库对象重置一些东西。
这是运行 rails 7.0.1 和 ruby 3.1.0。
产生这种意想不到的行为的错误是什么?
ruby-on-rails - Rails turbo_frame 未被识别
使用 Rails 7 turbo 流作为完全替代品的上下文测试 rails-ujs 功能。
类嵌套结构如下:
一页文章可能会创建caritems,每篇文章一个。
每篇文章都需要可创建、可更新、可删除(因此可以为不断改变主意的用户重新创建)。
因此,该页面对每篇文章都有一个块
部分然后调用涡轮帧:
呈现的 HTML 确实调用了 dom_ids 并按预期呈现:
控制器:
如果@cartitem 有效,则进程运行并按预期呈现:
但是,在使用空值提交时,为了测试验证,会出现意外结果:
正如预期的那样,事务回滚。但是,响应是不可处理的实体。
并且返回不是create.turbo_stream.erb
声明要做的,即如果 caritem 为 nil 则重新渲染部分。
*注意:else
respond_to 块的部分在引用和不引用 turbo_stream 的情况下都进行了尝试,结果相同。
相反,返回的xhr
响应是在开发模式下返回的错误的 HTML 页面。
浏览器控制台还抱怨
这是不真实的,因为 HTML 仍然挥之不去:
<turbo-frame id="article_1"></turbo-frame>
需要做些什么来正确处理错误,将表单部分呈现在正确识别的位置?
ruby-on-rails - 将淡入淡出设置为 turbo_stream
Rails UJS 有一个紧凑性。在js.erb
文件的单行中,调用 dom_id,部分 AND 给它一些交互(以极简主义的方法确认对象的变化)。调用 jQuery 库的示例。
为了消除 UJS 和对 jQuery 的依赖,在 turbo 流上的
vanilla JS 中实现等价物的最简洁的方法是什么?.fadeTo('slow',1)
ruby-on-rails - 如何禁用 Rails 应用程序中所有表单的 Hotwire / Turbo(Turbolinks 替代品)?
在 Rails 7 中,Turbolinks 被 Hotwire / Turbo 取代。这会修补 Web 链接,使它们成为 AJAX 样式的请求,就像 Turbolinks 所做的那样,而且还修补了表单。总的来说,我们发现这破坏了我们的应用程序。
- 已经附加了某种 JS 行为的表单会发生冲突。
- 标准 Rails 错误处理习惯用法 - “设置
flash
和render :new
/render :edit
” - 令人惊讶地打破;必须添加status: :unprocessable_entity
和交叉手指。 - 如果处理表单提交的控制器重定向到一个包含补丁锚 (
...#foo
) 的 URL,Turbo 会删除它。
最后,data: {turbo: false}
将代码分散到整个代码库中才有意义。更糟糕的是,我们使用的是 SimpleForm,所以这变得更加麻烦html: {data: {turbo: false}}
。
有没有办法 _globally为表单禁用 Turbo (理想情况下,所有表单,无论其来源如何 - 请让<form>
标签和其中的所有内容完全独立)但保持其其余行为不变?
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 很酷
flask - 我可以离线使用 hotwired turbo.js 吗?
我正在尝试在我的 python 烧瓶应用程序中使用 turbo-flask。它尝试下载 turbo.js 但失败了,因为我没有使用互联网连接。我想过将 js 文件直接插入到我的项目中,但在任何地方都找不到。可以离线使用吗?
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)