Кнопки отправки форм из ActionCable не работают - PullRequest
0 голосов
/ 12 февраля 2019

Я использую 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

...