问题标签 [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.
turbolinks - 将刺激点击动作添加到 Turbo 链接?
我正在使用 turbo 加载的框架上方的“编辑”按钮在显示页面上进行内联编辑功能。尝试在编辑按钮上添加一个切换,它在编辑模式下切换到取消按钮。
认为一个简单的刺激控制器可以解决问题,除非您添加data-action="click->edit-button#toggle"
覆盖按钮上的 turbo 动作的。想法?想法?
ruby-on-rails - 如何从 Rails 应用程序外部触发 ActionCable/数据库提交
我有一个带有 Hotwire 和 Actioncable 的 rails 7 应用程序设置来广播数据库提交以实时更新用户界面。
我有一个单独的应用程序(用 Python 编写),我想用它来向 rails 应用程序发送更新。
如果我直接写入数据库,那么我将无法触发用户界面自动更新。
我已经研究过可能使用 RabbitMQ 使用 RPC 调用,但我目前没有在我的环境中使用它,所以它可能开销太大。
我想知道 - 我如何从 Rails 应用程序之外执行此操作?
- 内部 API 端点
- RPC 调用
谢谢
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)
ruby-on-rails - 设计无法与 Turbo 一起使用的 Flash 消息
我正在使用 Devise 4.8.1 运行 Rails 6.1.4.4,并将我的设置配置为使用 importmaps 和 hotwire-rails。通过 Devise 登录时,我不再收到一条消息。
我确实在系统的其他部分收到了闪存消息。
在设计控制器中,我可以看到正在创建的 Flash 消息,但浏览器中没有出现任何内容。
我的 application.html.erb 布局中有以下内容
在我的控制器中,我的闪存消息是这样工作的;
我需要做什么才能让 Devise 在登录成功/不成功时显示 Flash 消息?
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
,保持侧边栏不变并更新主要部分。
如果需要,我可以提供一个确切的例子或更多细节。
ruby-on-rails - 使用 Turbo Frames 在 Rails 中处理 HTTP 404 响应的最佳实践?
我正在思考 Turbo Streams 的工作原理,主要是作为一个思想实验。在构建一个简单的玩具应用程序后,我了解了基础知识。使用少量 Turbo Frames 可以完成很多事情,这非常强大。
能够用 Turbo Frame 响应并在 DOM 中替换正确的内容是很有趣的。但是,我注意到如果 Turbo Frame 中的链接响应 HTTP 404,它只会显示在错误控制台中。(可见页面上没有任何变化。)处理此类错误的最佳实践是什么?向用户提示链接断开的简单选项是什么?
ruby-on-rails - 使用 Turbo Frames 的内联设计注册表单
我在使用 Turbo Frames 设置设计注册表单时遇到问题。我希望将 Devise 注册表单设置为“逐步参与”表单,只需要电子邮件即可从主页注册新用户。
到目前为止,我是这样设置的:
- 首先,我使用这个解决方法来让默认的 Devise 视图与 Hotwire 一起使用。
- 然后,我使用这种方法让设计注册表单在我的主页上工作
- 最后,我使用这种方法通过 Devise 设置了仅限电子邮件的注册。
这一切都按预期工作,但是当用户完成注册时,它会重定向并显示一个 Flash 页面。相反,我想使用 Turbo Frames 将表单替换为“感谢您注册”之类的消息,而无需重新加载任何页面或进行重定向。
此外,如果表单中有任何错误(例如电子邮件为空白),它会重定向到默认的设计注册视图并在那里显示错误。我希望这发生在主页框架内,以便在显示错误时不会重新加载页面。
那么,我将如何使用 Devise 和 Turbo Frames 做到这一点?
这是主页上的表单:
而且,为了让它工作,我创建了一个confirmations_controller.rb
覆盖默认值的方法,Devise::ConfirmationsController
如下所示:
我是否需要创建一个 UsersController 来覆盖 Devise 的某些部分以使用涡轮帧?我该怎么做?
ruby-on-rails - Rails:Turbo Stream Broadcast 不更新视图
我有一个 Turbo Stream 没有更新视图,我不知道为什么。我在类似的配置中设置了另外两个广播,它们工作正常。
从我所看到的来看,一切看起来都应该正常工作,我只是没有在前端获得更新。我错过了一些明显的东西吗?
任何帮助或指针表示赞赏!