问题标签 [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 回答
74 浏览

turbolinks - 将刺激点击动作添加到 Turbo 链接?

我正在使用 turbo 加载的框架上方的“编辑”按钮在显示页面上进行内联编辑功能。尝试在编辑按钮上添加一个切换,它在编辑模式下切换到取消按钮。

认为一个简单的刺激控制器可以解决问题,除非您添加data-action="click->edit-button#toggle"覆盖按钮上的 turbo 动作的。想法?想法?

0 投票
1 回答
54 浏览

ruby-on-rails - RoR,页面未在 turbo_frame 中使用 Turbo_stream DELETE 更新

我的仓库:https ://github.com/czepesch/gloss (turboframes-dev 分支)

我有一个词汇表中的条目列表。删除操作有问题。条目已删除,但页面未重新加载\条目未自动删除。(相同的删除操作在同一页面上没有 turboframe)

服务器日志:

在此处输入图像描述

0 投票
1 回答
24 浏览

ruby-on-rails - 如何从 Rails 应用程序外部触发 ActionCable/数据库提交

我有一个带有 Hotwire 和 Actioncable 的 rails 7 应用程序设置来广播数据库提交以实时更新用户界面。

我有一个单独的应用程序(用 Python 编写),我想用它来向 rails 应用程序发送更新。

如果我直接写入数据库,那么我将无法触发用户界面自动更新。

我已经研究过可能使用 RabbitMQ 使用 RPC 调用,但我目前没有在我的环境中使用它,所以它可能开销太大。

我想知道 - 我如何从 Rails 应用程序之外执行此操作?

  • 内部 API 端点
  • RPC 调用

谢谢

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 回答
49 浏览

ruby-on-rails - 设计无法与 Turbo 一起使用的 Flash 消息

我正在使用 Devise 4.8.1 运行 Rails 6.1.4.4,并将我的设置配置为使用 importmaps 和 hotwire-rails。通过 Devise 登录时,我不再收到一条消息。

我确实在系统的其他部分收到了闪存消息。

在设计控制器中,我可以看到正在创建的 Flash 消息,但浏览器中没有出现任何内容。

我的 application.html.erb 布局中有以下内容

在我的控制器中,我的闪存消息是这样工作的;

我需要做什么才能让 Devise 在登录成功/不成功时显示 Flash 消息?

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 回答
21 浏览

ruby-on-rails - 使用 Turbo Frames 在 Rails 中处理 HTTP 404 响应的最佳实践?

我正在思考 Turbo Streams 的工作原理,主要是作为一个思想实验。在构建一个简单的玩具应用程序后,我了解了基础知识。使用少量 Turbo Frames 可以完成很多事情,这非常强大。

能够用 Turbo Frame 响应并在 DOM 中替换正确的内容是很有趣的。但是,我注意到如果 Turbo Frame 中的链接响应 HTTP 404,它只会显示在错误控制台中。(可见页面上没有任何变化。)处理此类错误的最佳实践是什么?向用户提示链接断开的简单选项是什么?

0 投票
0 回答
61 浏览

ruby-on-rails - 使用 Turbo Frames 的内联设计注册表单

我在使用 Turbo Frames 设置设计注册表单时遇到问题。我希望将 Devise 注册表单设置为“逐步参与”表单,只需要电子邮件即可从主页注册新用户。

到目前为止,我是这样设置的:

  • 首先,我使用这个解决方法来让默认的 Devise 视图与 Hotwire 一起使用。
  • 然后,我使用这种方法让设计注册表单在我的主页上工作
  • 最后,我使用这种方法通过 Devise 设置了仅限电子邮件的注册。

这一切都按预期工作,但是当用户完成注册时,它会重定向并显示一个 Flash 页面。相反,我想使用 Turbo Frames 将表单替换为“感谢您注册”之类的消息,而无需重新加载任何页面或进行重定向。

此外,如果表单中有任何错误(例如电子邮件为空白),它会重定向到默认的设计注册视图并在那里显示错误。我希望这发生在主页框架内,以便在显示错误时不会重新加载页面。

那么,我将如何使用 Devise 和 Turbo Frames 做到这一点?

这是主页上的表单:

而且,为了让它工作,我创建了一个confirmations_controller.rb覆盖默认值的方法,Devise::ConfirmationsController如下所示:

我是否需要创建一个 UsersController 来覆盖 Devise 的某些部分以使用涡轮帧?我该怎么做?

0 投票
2 回答
83 浏览

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

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

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

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

0 投票
1 回答
42 浏览

ruby-on-rails - 带有涡轮框架的 Rails 主动链接样式

我有这样的链接:

g.title如果单击链接的结果在另一个框架中呈现, 我如何设置活动链接(活动词汇表)的样式?在此处输入图像描述

如果当前路径等于请求的路径,我尝试使用帮助器为链接提供一些类,但它不起作用。没有为链接提供“活动”类:

当使用浏览器地址栏中未显示的帧当前路径时,我尝试通过data-turbo-action" => "advance". 使用该浏览器在地址栏中有当前路径,但仍然链接没有“活动”类..