微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 Hotwire 集成到现有 Rails 项目中的问题

如何解决将 Hotwire 集成到现有 Rails 项目中的问题

我刚刚加入这个社区,这是我的第一篇文章

我一直在关注几个 Hotwire 教程,并使用该技术构建了一些原型。与 JS 前端框架相比,以更低的复杂性获得类似 SPA 的响应能力是多么容易,这给我留下了深刻的印象。

然而,我发现当我尝试将代码和流程从我的原型转换到我现有的 Rails 项目时,它根本不起作用。更糟糕的是,我不知道为什么。

我尝试使用以下一般过程编写一些跟踪代码

  1. 包括 Hotwire gem
  2. 通过终端命令安装 Hotwire
  3. 包括来自相关模型的广播
  4. 在视图级别应用 turbo_stream_from 标记作为侦听器
  5. 在您希望更新模型数据的位置包含 turbo_frame_tag

这在我的原型中可靠地工作,但在我现有的项目中不起作用。我怀疑这可能是因为我现有的项目没有使用最新版本的 Rails 或 Ruby? (事实证明,升级也不容易。)我目前使用的是 Ruby 版本 2.7.1 和 Rails 版本 6.0.2。

我知道我应该提供一些我的项目代码,但我什至不知道从哪里开始。如果有人能够为我提供一些指导,我将不胜感激。谢谢!

编辑:如果有帮助的话,这些是我在尝试让 Hotwire 自动更新索引页面上的模型实例列表时收到的终端消息类型。似乎广播正在运行,但我的听众却没有?

Terminal messages when committing database changes

story index page

Code in story partial

code in my story model

EDIT: HTML Source via Chrome dev tools

解决方法

我想到的一件事是您的流响应中有一个 <turbo-frame-tag>,这是为什么呢?我不确定这是否是无法正常工作的原因,但查看他们的 examples 流模板不应包含框架标记,它应该是这样的:

<turbo-stream action="append" target="dom_id">
    <template>
         Content to append to container designated with the dom_id.
    </template>
</turbo-stream>

您确定页面上有一些带有 id="stories" 的 div 吗?这是流正在寻找要附加到的元素;如果找不到,就什么都不会发生。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?