ruby-on-rails - Hotwire 未更新项目列表
问题描述
我在我的 Rails 应用程序中设置了 Hotwire,但它不会使用项目更新索引视图。我有一个简单的项目视图:
<div>
<ul role="list" class="mt-1 grid grid-cols-1 gap-1">
<%= turbo_stream_from "projects" %>
<%= turbo_frame_tag "projects" do %>
<%= render @projects %>
<% end %>
</ul>
</div>
有一个projects/_project.html.erb
部分,它只显示带有涡轮框架的单个项目:
<%= turbo_frame_tag dom_id(project) do %>
<p><%= project.name %></p>
<p><%= project.status %></p>
<% end %>
在project
模型中,我添加了流:
after_create_commit { broadcast_append_to 'projects' }
after_update_commit { broadcast_replace_to 'projects' }
after_destroy_commit { broadcast_remove_to 'projects' }
现在,当我在控制台中添加一个项目时,我看到它正在广播:
[ActionCable] Broadcasting to projects: "<turbo-stream action=\"append\" target=\"projects\"><template> <turbo-frame id=\"project_9\">\n <li ... </li>\n</turbo-frame></template></turbo-stream>"
但是在浏览器的视图中没有添加项目。只有在浏览器页面刷新后才会显示项目。
广播本身似乎很好,但 Rails 不知道在哪里附加新项目。
怎么了?
解决方案
结果一切正常,但我忘了正确设置 ActionCable。添加 Redis 后cable.yml
一切正常。
推荐阅读
- c++ - 在 C++ 中将 4 个数字组合成一个 4 位数字
- php - MySQL 选择基于 MySQL JSON 数组值
- java - 我想在 JOptionPane 中显示 for 循环的输出
- flutter - 在另一个页面上时导航到内页
- c++ - 使用 Bison 解析简单 C 源代码的问题
- javascript - 运行一个函数指定的次数
- javascript - 如何从 React Native 中的另一个功能组件更改一个功能组件的状态?
- java - Java RMI 客户端如何使用域名连接到 Java RMI 服务器
- algorithm - 使用位操作处理负数
- discord.js - 在 discord.js 中检测嵌入标题