我正在使用ActionCable实时显示表中的对象数组,其中每个对象都有自己的带有提交按钮的表单。 随页面加载的原始提交按钮运行良好,但是AC更新中的按钮没有任何作用。它们显示完美,只是其提交按钮不起作用。我必须重新加载页面才能使其正常工作。我对原始对象和AC更新对象使用了相同的部分。
看一下html表单,我发现除了真实性令牌之外,工作表单和不工作表单/提交按钮之间没有区别。服务器日志显示,当我单击断开的按钮时,什么也没有发生,并且据我了解,浏览器的控制台中也没有任何错误或任何内容。 我尝试删除了涡轮链接,但没有帮助 我是WebSockets的新手,所以这里一定是我所缺少或误解的东西。
部分:
<tr id="<%= (order_item.status == 'new' ? 'new-' : 'ip-') + order_item.id.to_s %>">
<%= form_with(model: order_item) do |form| %>
<td><%= order_item.car&.name || DailyOffer.model_name.human %></td>
<td><%= order_item.updated_at.hour %>:<%= order_item.updated_at.min.to_s.rjust(2, '0') %></td>
<td>
<%= form.submit t(order_item.status == 'new' ? :general_start : :general_ready), class: "btn btn-secondary btn-tall" %>
</td>
<% end %>
</tr>
创建一个新对象:
def create
@order_item = OrderItem.new(order_item_params)
if @order_item.save
ActionCable.server.broadcast "order_channel", type: :new, body: order_item_render(@order_item)
end
end
def order_item_render(order_item)
render(partial: 'order_items/order_item', locals: {order_item: order_item})
end
编辑:可能与AJAX相关