问题标签 [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.
ajax - 刺激 ajax:response 不返回服务器响应数据
我正在启动一个新的 Rails 7 应用程序,最近发现我们不能再使用 ujs 了页面上的功能。
我遇到的问题是我在 ajax:success 进程之后的响应是不可迭代的:
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator))
下面是我的 HTML、Rails 和 Stimulus 代码:
HTML
红宝石/导轨
这将返回一个基本的 html 页面,该页面将被插入到页面中的另一个位置。
刺激作用
event.detail
给了我不可迭代的错误。有谁知道我如何从 rails 获得我的回复以进行格式化,以便该[data, status, xhr]
部分实际工作?
如果为此需要热线或涡轮增压器,则示例将非常有帮助:)
谢谢埃里克
ruby-on-rails - 嵌套 turbo_frame_tag 中的 Rails Hotwire 可操作流
在一篇文章之后,我正在尝试 Rails Hotwire,并希望创建一个像单页应用程序一样工作的简单博客(即,turbo_stream
用于在不重新加载整个页面的情况下处理帖子和评论)。我还想通过对所有连接的浏览器实时进行 crud 操作来同时使用 actioncable。
posts/show
到目前为止,当我显示特定帖子(即)时,除了帖子评论的实时部分外,它正在工作。
它可能与我使用的标识符turbo_frame_tags
和/或我的方式有关,broadcast
但我似乎找不到答案。我查看了这个问题以及类似的 GoRails 示例,但它仍然不起作用。
我现在的posts/index
每个帖子的部分内容如下:
用更详细的posts/show
版本替换每个帖子的当前部分:
各自的模型是:
和
_comment
部分是
如前所述,帖子工作的实时 crud 工作而不是他们的评论。知道我做错了什么吗?提前致谢。
ruby-on-rails - Rails Hotwire + 管理员命名空间
我有一个运行 rails 6.1.3.2 的应用程序。我开始迁移以使用 hotwire 而不是 ujs。我的应用程序使用管理命名空间来允许用户进行编辑,通过它创建项目。下面的示例路线 -
通过管理视图对 进行更新时event_attachment
,turbo_stream
不会在管理视图中处理部分内容,而是在EventAttachmentsController
. 我不确定它为什么这样做 - 任何建议都将不胜感激。
管理员:EventAttachmentsController -
这是我的表格样本admin/event_attachments
-
Rails 服务器日志(作为测试,我在主 event_attachments 视图中创建了一个部分) -
ruby-on-rails - 渲染时删除链接“data-turbo-frame”属性
按照下面的教程,我正在使用 Stimulus 和 ActionText 来处理“提及”;
显示 actiontext 内容时,每个“提及”的部分内容都是从 json.builder 文件呈现的。
我遇到的问题是 actiontext 内容在 turbo 框架内,并且提及部分包含一个链接。因此我需要添加以下属性来转义涡轮帧:
由于某种原因,此属性在渲染时被从页面中剥离。(使用 html.slim)。
结果 HTML:
ruby-on-rails - 在 Turbo 负载上保持模态打开?
我基本上是在关注这个 GoRails 剧集:https ://gorails.com/episodes/datatables-from-scratch-using-hotwire
对表单的更改projects
按预期更新框架。我的模态过滤器效果很好。以前我在表单下方projects
有框架。但是,该内容不会通过 Turbo 更新。我将模态嵌套在涡轮框架中,并将涡轮框架嵌套在表单中。
这现在很好用 - 模型内容得到更新,除了现在当涡轮更新时,hidden
类被重新应用,模态“关闭”并且模态背景保持显示在页面上。我希望模态保持打开状态,以便用户可以选择多个过滤器,然后点击esc
键或模态按钮将其关闭。
开放其他方法来实现这一点 - Turbo / Hotwire 的新手,所以我可能会在这里遗漏一些简单的东西。
hotwire-rails - 在热线中重置表格
正如 hotwire登录页面上的示例所提供的,表单清除过程对我来说是不透明的,也不起作用。
安装了运行 ruby 3.1 的 rails 7.0.1。刺激控制器设置为:
注意:DHH的例子只调用刺激,而rails预装的hello-controller.js
指的是@hotwired/stimulus
. 两个 syntassi 都试图无济于事。
表单元素的结构如下:
我看到提交动作(实际上是它的结尾)是连接。但它没有发生,而新记录已创建并且 UI 按预期更新。
为什么会失败以及应该如何解决?
hotwire-rails - Rails 控制台销毁操作,但不会渗透到应用程序并通过 turbo 流进行处理
表单包含销毁按钮
控制器以预期的方式响应
但是,在控制台中:
不会影响浏览器,实际上日志中没有注册任何内容。刷新浏览器确实会根据数据库对象重置一些东西。
这是运行 rails 7.0.1 和 ruby 3.1.0。
产生这种意想不到的行为的错误是什么?
ruby-on-rails - 最佳实践:可以只渲染 Turbo Stream 响应吗?还是总是包含标准的 HTML 响应?
将 format.html 和 format.turbo_stream 响应保留在 respond_to 块中以获取所有控制器响应是最佳做法吗?在任何情况下只包含 turbo_stream 响应是安全的吗?
Hotwire 文档指出:
最好在没有 Turbo Streams 的情况下开始您的交互设计。让整个应用程序像 Turbo Streams 不可用时一样工作,然后将它们分层作为一个级别。这意味着您将不会依赖需要在本机应用程序或没有它们的其他地方工作的流程的更新。
WebSocket 更新尤其如此。如果连接不佳,或者存在服务器问题,您的 WebSocket 很可能会断开连接。如果应用程序设计为在没有它的情况下工作,它将更具弹性。
我假设这意味着我们应该始终将非 Turbo Stream 响应、错误处理等作为后备?
我在我的#index 页面之一中成功实现了 Turbo Streams。我有一个表,其中的行代表集合中的每个模型,每行中都有操作按钮,可以让用户更新模型。以前,按钮链接到单独的#edit 表单页面,然后是用于#show、错误处理等的标准 CRUD 流。现在使用 Turbo Streams,用户可以在不离开 #index 表视图的情况下更新行。太棒了。我希望摆脱旧的视图页面,但想知道是否需要保留它们作为后备。
hotwire-rails - 在 turbo_stream 模板标签内渲染
为什么渲染<template>
stream.erb 文件的部分内部标签会引发ActionView::MissingTemplate
错误?
例如在我有的 some_action_in_controller.turbo_stream.erb 文件中;
在这种情况下,我使用<turbo-stream>
标签而不是 <%= turbo_stream.. %> 因为在我的流文件中,我渲染的不仅仅是部分内容,以维护我正在流式传输数据的页面中的 UI。
为什么我会收到错误消息?实际发生了什么?
turbolinks - 保持对 Turbo Load 的输入关注?
我将内容和搜索表单包裹在涡轮框架中。当用户在搜索字段中输入内容时,内容会实时更新。问题是搜索字段每次都失去焦点。
有什么方法可以保持专注吗?它也应该只在打字时而不与其他表单输入交互。
我可以将搜索字段移到 turbo 框架之外,但考虑到我喜欢的 div 布局,这并不理想。