问题标签 [turbo-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 投票
1 回答
153 浏览

ruby-on-rails-7 - rails turbo_stream 不适用于 rails 7 应用程序

我正在尝试提交表单并在 rails 7.0 应用程序上返回 turbo_stream。在我的表格中,我有以下内容。

在我的控制器中,我有以下内容

这给了我一个错误ActionController::UnknownFormat

尽管我在表单中指定了格式,但似乎格式是html我提交表单时的格式。

我可以看到这是从哪里来的,在我的请求标头上,我有以下内容

我需要在请求标头上添加text/vnd.turbo-stream.html类型,我该怎么做?

0 投票
1 回答
30 浏览

ruby-on-rails - Turbo-rails 不同范围的部分广播更新

我想根据其作用域路由将 ActiveRecord 的更新广播到不同的部分。我怎么能那样做?

例如:我有一个 Post 模型has_many :comments。评论可以更新,我们comment在以下文件夹中有两个部分,以使用不同的模板显示它们:

  • /views/comments/_comment.html.erb
  • /views/访客/comments/_comment.html.erb

每次我更新记录时,它都会使用 turbo-stream 进行广播。

问题是广播的结果正在使用/views/comments/_comment.html.erb整个应用程序。我想要一种在视图位于特定范围内时使用范围部分广播和重新呈现评论的方法,并且在未定义范围时使用非范围部分,这甚至可能吗?

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)

0 投票
0 回答
32 浏览

ruby-on-rails - 使用 Hotwire 仅渲染 DOM 的特定部分

假设我们有一个有 2 个框架的页面,如下所示:

并且页面是通过Books#index动作呈现的。

问:我们如何main在对应于控制器操作的 GET 请求上使用 Hotwire 仅更新涡轮帧index


这是我尝试的方法(简化):

BooksController当我单击链接对主要部分进行分页时,将向的操作发送一个 GET 请求index,并带有一个名为 的参数page。端点看起来像/books?page=2.

然后,books 控制器将整个books/index.html.erb视图作为 HTML(包括侧边栏)发回,从而更新帧 1 和 2,这不是我想要的。

我想收到<turbo-frame id='main'>as vnd.turbo-stream,保持侧边栏不变并更新主要部分。

如果需要,我可以提供一个确切的例子或更多细节。

0 投票
1 回答
32 浏览

javascript - 事件未在第一页加载时加载,但在刷新后有效

我正在使用Rails 7创建一个名为 Employee Management System 的应用程序。要添加员工,我创建了一个表单。在这里,我使用了nested-form-fields gem 来添加员工的联系人。问题是第一次加载表单时,当我想添加或删除联系人字段时,它会重定向到同一个表单。但是当我刷新页面时,它开始工作没有任何问题。甚至添加或删除的字段也会反映在数据库中。仅在首次加载创建或更新员工页面时才会产生此问题。我发现当我单击链接添加员工并打开表单时。事件未在 html 中加载。正如我们在下图中身体标签附近的图片中看到的那样:

在此处输入图像描述

但刷新后,会加载事件: 在此处输入图像描述

我在 gem 文件夹中看到了 js.coffee 文件,但这对于像我这样的初学者来说太高级了。那里的代码如下所示:

有什么可以改变来解决这个问题吗?请帮忙!!

0 投票
0 回答
33 浏览

ruby-on-rails - rails 7.0 的 Rspec 请求测试返回一个整数

我有一个 rails 7.0 应用程序,我在其中检索所有项目并将它们显示在视图中。

在我看来,我渲染了所有的项目。

然后在我的规范中,我正在尝试测试索引页面。

为了将 rspec 与 rails 7.0 和 hotwired 一起使用,我是否需要任何特殊配置?

0 投票
2 回答
83 浏览

ruby-on-rails - Rails:Turbo Stream Broadcast 不更新视图

我有一个 Turbo Stream 没有更新视图,我不知道为什么。我在类似的配置中设置了另外两个广播,它们工作正常。

从我所看到的来看,一切看起来都应该正常工作,我只是没有在前端获得更新。我错过了一些明显的东西吗?

任何帮助或指针表示赞赏!

0 投票
0 回答
29 浏览

ruby-on-rails - 您如何使用涡轮框架将对象创建表单替换为对象显示部分?

我有一个带有相应视图的模型和subscription_tier动作。我已经用涡轮框架包裹了每一个showedit

<%= turbo_frame_tag subscription_tier do %>

当我编辑现有订阅层并保存它时,turbo 框架会刷新并显示我保存的层,但我无法复制它来创建层。

我的新层级框架:

并且在new.html.erb

单击“添加层”按钮成功呈现表单,我可以保存对象,但在保存时涡轮框架被破坏并出现错误Response has no matching <turbo-frame id="new_tier"> element

我知道这是因为我的show部分是用 包裹的<%= turbo_frame_tag subscription_tier do %>,但我不知道如何协调这一点。