首页 > 解决方案 > 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 不知道在哪里附加新项目。

怎么了?

标签: ruby-on-railshotwire-railsturbo

解决方案


结果一切正常,但我忘了正确设置 ActionCable。添加 Redis 后cable.yml一切正常。


推荐阅读