问题标签 [hotwire-rails]

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 投票
0 回答
285 浏览

jquery - 如何设置 Rails UJS 和 Turbo?

我对运行旧的 jQuery 代码片段和 Rails UJS 以及 Turbo 到底需要做什么感到困惑。

DHH 在 6 月份添加了这个 PR,它本应提高兼容性,但它缺乏有关设置应如何工作的详细信息。

我的应用程序中仍然有一堆旧的 jQuery 和 UJS 片段,但我也在尝试迁移到 Turbo。我最初试图完全放弃 UJS,但一次太多了。此时,我正在使用 Webpacker 运行 Rails 6.1.4.1,并且我的 Gemfile 中没有任何 UJS gem。

升级页面说:

“Rails UJS 可以直接从 Rails 框架提供,也可以通过经典的 jquery-ujs 插件提供。”

这是否意味着 UJS 现在已内置到 Rails 中,而不是单独的 gem?或者我应该添加gem 'jquery-rails'到我的 Gemfile 中吗?

我的 package.json 呢?我现在需要回去,yarn add jquery-ujs这里所示?

application.js 呢?我之前在这里导入了@rails/ujs,比如:

当我添加 Turbo 时,我注释掉了这些行。它们是必要的还是没有的?

关于 jQuery,我拼凑在一起(从其他网站粘贴)一种使用$全局的方法:

这不再需要了吗?

编辑以包含 package.json 和 application.js 的依赖项部分...

package.json

application.js

0 投票
1 回答
157 浏览

ruby-on-rails - 使用 sprocket 将 Hotwire 添加到现有的 Rails 6.1 应用程序

我正在尝试使用 sprockets 应用程序升级现有的 Rails 6.1 以使用刺激。我安装了

javascript_importmap_tagsFirefox 开发人员工具中出现此错误的原因:

这应该与链轮一起工作吗?我有importmap-rails (0.7.6)stimulus-rails (0.4.2)

0 投票
1 回答
411 浏览

ruby-on-rails - JS/Ajax 表单如何与 Rails 中的 HotWire 一起使用?

我看到了一种运行 javascript 的新方法,而不是 rails_ujs。但乍一看,它可能没有相同的功能。

是否可以通过 Stimulus/Turbo(Hotwire)返回转义的 html/partial 以进行响应?动态/ajax/远程表单是什么样的?

*这个问题可能也适用于旧版本的 Rails。在 Rails 7 中,这是首选的默认方法。

0 投票
1 回答
107 浏览

turbolinks - 涡轮驱动适用于表单但不适用于链接

我正在尝试不带导轨的涡轮驱动器。

它似乎适用于表单但不适用于链接..即使表单设置为GET.

为了尽量减少它,我使用了 bash 和 cgi,但是我在使用另一个 Web 框架时看到了同样的东西。

然后当我去http://localhost:8000我得到这个:

带有链接和提交按钮的示例网页

链接和提交按钮都加载链接中显示的随机数,并准备一个新的随机数进行加载。

显示来自表单或链接的查询字符串的网页

不同之处在于链接会重新加载整个页面,就好像不包括涡轮增压器一样,并且会获取表单。

网络选项卡显示来自链接的完整页面加载和来自表单的 ajax

我该怎么做才能使它也成为 ajax 链接?我是否忽略了链接中需要的属性或其他内容?

0 投票
1 回答
1402 浏览

hotwire-rails - 如何重新加载单个涡轮帧并更新 url?

我试图做一个不涉及任何特定服务器端技术的最小示例。所以我刚刚用 bash 生成网页并用 cgi 提供它。

这将创建一个如下所示的网页:

没有查询字符串的初始页面

然后,当您单击 turbo frame reloader 链接时,您会得到以下信息:

具有更新的查询字符串编号、相同的奖励编号且没有 URL 更改的页面

幸运红利号码没有改变,因为它只加载了turbo frame,但是turbo frame里面显示的查询字符串号已经更新了。

整页 Turbo 链接执行此操作:

带有更新的 url 和更新的幸运奖金号码的页面

它会更新幸运红利号码(turbo 框架之外的内容)并更新 url。(但我确信它工作正常。我已经检查了网络选项卡。它每次只进行一次提取。)


我想做的事:

我想要一个只更新涡轮帧的链接(在我的示例中保持幸运奖金数字不变)但更新 url。我猜这个用例是如果你有一个始终保持不变的横幅或菜单,但是一个主 turbo 框架,其中包含应该对应于 url 的所有页面特定内容。

所以在这个例子中,我希望看到页面上的查询字符串和实际的查询字符串更新,只留下“幸运奖金号码”不变。

0 投票
1 回答
74 浏览

ruby-on-rails - 如何转换 minitest 创建测试以适应 turbo_stream?

在 minitest 中,在 Hotwire 之前,创建测试可能如下所示:

将 create controller 操作更改为 respond_to :turbo_stream 后,上述测试将不再正确执行。我试过简单地将 format: :turbo_stream 作为参数哈希的一部分传递......但是,这也不起作用。

必须有一种 Rails 7 方法来测试它。Minitest 可能尚未针对这些新功能进行更新。

有没有人为这种新格式更新了他们的测试?

0 投票
1 回答
1010 浏览

ruby-on-rails - Hotwire Turbo 不替换涡轮框架,抛出警告:响应没有匹配元素

我开始在 Rails 6 中使用 Hotwire 和 Turbo,并且遇到了 Turbo 无法替换我的涡轮框架的问题。我收到以下错误消息:Response has no matching <turbo-frame id="experiments"> element

我通过控制器操作在页面上呈现以下内容:

这会正确地将请求发送到/labs/experiments,并且当我检查我的网络请求时,会从我的控制器返回以下内容:

但是,响应并未在我的涡轮框架内呈现,而是我收到控制台日志警告:Response has no matching <turbo-frame id="experiments"> element

任何帮助表示赞赏:)

0 投票
1 回答
205 浏览

ruby-on-rails - 表单响应必须使用 link_to 重定向到另一个位置

我正在使用带有 hotwire-rails 的 rails 6.1.x

我想知道您是否曾经经历过以下情况:

我有一个页面,我有这样的 link_to:

在页面顶部,我启用了 turbo:

<%= javascript_pack_tag 'client', 'data-turbo-track': 'reload' %>

现在,如果我单击链接,则会收到错误消息:

Firefox 控制台中的“错误:表单响应必须重定向到另一个位置”

什么也没有发生。

如果我删除“方法::get”部分,那么它工作正常。

你知道为什么会这样吗?真是令人费解。

0 投票
1 回答
152 浏览

ruby-on-rails - 仅当创建或更新具有特定名称值的记录以及特定部分时,如何在 Rails 6(热线)中发送 broadcasts_to?

我有一个带有三个数字整数指标的 Rails 6 View:速度、温度和压力。这些值作为序列化对象存储在 SavedObject 模型中。并在控制器中使用它们各自的实例变量传递给视图。@速度 @温度 @压力

问题

如何为每个序列化对象更新发送单独的广播(使用涡轮热线),以“名称”列(如“设备 2 温度”)为条件,以便每个广播达到自己的部分?(同一视图中有三个不同的局部)

这是模型

这些是列。

记录示例

0 投票
1 回答
64 浏览

ruby-on-rails - Hotwire 模态表单无法正确渲染 Flatpickr

我有一个模态表单,可以很好地通过热线创建新的详细信息记录。这些字段中有 flatpickr 日期字段和两个 flatpickr 时间字段。如果我有验证错误,表单会在模式内显示错误,但 flatpickr 输入会重置为没有 flatpickr 作为文本字段。当显示验证错误时,如何确保它再次呈现 flatpickr 字段?

控制器创建:

create.turbo_stream.erb

形式: