- bounty将在5天后过期**。此问题的答案可获得+200声誉奖励。doer123456789正在寻找来自声誉良好来源的答案:该解决方案需要使用两个不同的分瓣,并且需要正确的模型、控制器和视图,包括Turbo和Stimulus解决方案。
我有两个模型,一个用于客户,一个用于投诉,一个客户也有很多投诉。如果向客户添加了投诉,如何使用Turbo Stream更新投诉索引和客户的显示视图(使用两个不同的部分),同时确保客户显示视图中仅列出特定客户的投诉?
下面是我的一些代码:
客户型号:
class Customer < ApplicationRecord
validates_presence_of :names
belongs_to :company
has_many :complaints
broadcasts_to ->(customer) { [customer.company, "customers"] }, inserts_by: :prepend
end
投诉型号:
class Complaint < ApplicationRecord
belongs_to :company
belongs_to :customer
broadcasts_to ->(complaint) { [transgression.company, "complaints"] }, inserts_by: :prepend
end
投诉索引. html. erb(流媒体罚款):
<%= turbo_stream_from @company, "complaints" %>
<h1>Complaints</h1>
<%= link_to new_complaint_path, class: "btn", data: { turbo_frame: "remote_modal" } do %>
New
<% end %>
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th scope="col">Customer</th>
<th scope="col">Date</th>
<th scope="col">Note</th>
<th colspan="2"></th>
</tr>
</thead>
<tbody id="complaints">
<%= render @complaints %>
</tbody>
</table>
客户显示. html. erb视图(非流...):
<%= turbo_stream_from @customer %>
<%= turbo_stream_from @customer, "complaints" %>
<%= turbo_frame_tag "customer" do %>
<%= @customer.names %>
<% end %>
<%= link_to edit_employee_path(@customer), :class => "btn", data: { turbo_frame: "remote_modal" } do %>
Edit
<% end %>
<h4>Complaints</h4>
<%= link_to new_complaint_path, class: "btn", data: { turbo_frame: "remote_modal" } do %>
Add
<% end %>
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th scope="col">Date</th>
<th scope="col">Note</th>
<th colspan="2"></th>
</tr>
</thead>
<tbody id="complaints">
<%= render @complaints %>
</tbody>
</table>
</div>
1条答案
按热度按时间bwitn5fc1#
在客户展示页面上,您订阅了
@customer, "complaints"
,但您没有向它广播任何内容,因此没有更新。我不知道你的控制器有什么问题,你不需要做任何广播工作: