我已经正确连接了 hotwire/turbo,以便在我页面的一个位置对单个模型执行 crud 操作,但我也想在页面的不同位置同时更新同一个模型。我以为我可以设置两个流,但它似乎不起作用。
根据我命名目标的方式,指定目标确实适用于创建操作,但不适用于更新和销毁。这是我认为应该工作但没有:
----位置1(“生物”流)----
<div id="creatures">
<%= turbo_stream_from "creatures" %>
<%= turbo_frame_tag "creatures" do %>
<div>
<% @creatures.each do |creature| %>
<div>
<%= render "creatures/creature", creature: creature %>
</div>
<% end %>
</div>
<% end %>
</div>
----位置 2(“creatures_main”流)----
<%= turbo_stream_from "creatures_main" %>
<%= turbo_frame_tag "creatures_main" do %>
<% @creatures.each do |creature| %>
<div>
<%= render "creatures/creature", creature: creature %>
</div>
<% end %>
<% end %>
----常见的_creature.html.erb部分----
<%= turbo_frame_tag dom_id(creature) do %>
<%= link_to creature.name, "#" %>
<% end %>
---- 生物.rb ----
class Creature < ApplicationRecord
validates :name, presence: true
after_create_commit {
broadcast_append_to "creatures"
broadcast_append_to "creatures_main"
}
after_update_commit {
broadcast_replace_to "creatures"
broadcast_replace_to "creatures_main"
}
after_destroy_commit {
broadcast_remove_to "creatures"
broadcast_remove_to "creatures_main"
}
end
当我的模型中有两个调用时会发生什么,创建操作将新创建的生物放置在位置 1 两次,两个中只有一个被更新,但无论它们在页面上的哪个位置,它们都被正确销毁。