Hotwire没有更新项目列表



我有Hotwire设置在我的Rails应用程序,但它不更新索引视图与项目。我有一个简单的项目视图:

<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。在cable.yml中添加Redis后,一切都很好。

有类似/相同的问题。我一直在跟踪DHH的rails 7演示。

Websocket更新可以在浏览器中工作,但当我在rails控制台中删除或修改模型时却不能。甚至在控制台中也显示了boardcasting日志消息,但是在浏览器中什么都没有发生。在开发模式下配置从异步到redis的电缆后,它工作了。

我在这里找到了正确的配置设置(为我工作)https://github.com/nijicha/rails-7-demo/blob/main/config/cable.yml

development:
adapter: redis
url: redis://localhost:6379/1
test:
adapter: test
production:
adapter: redis
url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
channel_prefix: demo_production

最新更新