Rails 5 кросс-модель ajax форма не обновляет индекс - PullRequest
0 голосов
/ 25 апреля 2019

Класс Actual управляет созданием и удалением объектов в классе Friendgroup.Страница формы

<ul id=friendgroups>   <%= render @friendgroups %> </ul>

<%= form_with model: Friendgroup.new, data: {'js-friendgroup-form' => true} do |form| %>   
  Name <%= form.text_field :name %>
  <%= form.submit %> 
<% end %>

правильно вызывает коллекцию групп друзей при загрузке страницы, контроллер для групп друзей создает записи:

  def create
    params[:friendgroup][:user_id] = current_user.id
    @friendgroup = Friendgroup.new(friendgroup_params)
    authorize @friendgroup
    if @friendgroup.save
      render partial: 'friendgroup', locals: {friendgroup: @friendgroup}
    end  
  end

При загрузке страницы загружаются существующие объекты:

<li data-js-friendgroup-id=<%= friendgroup.id %>>
  <%= friendgroup.name %> <%= link_to "Delete", friendgroup, remote: true, method: :delete, data: { confirm: "Are you sure you want to delete '#{friendgroup.name}'?" } %>

Однако действия AJAX не просачиваются обратно в индекс, что приводит меня к выводу, что функции javascript не связаны с соответствующими классами / элементами:

//= require jquery3
//= require jquery-ui
//= require rails-ujs
$(document).ready(function() {
  $('[data-js-friendgroup-form]').on("ajax:success", function(event, data, status, xhr){
    var friendgroup = $(xhr.responseText).hide();
    $('#friendgroups').append(friendgroups);
    friendgroup.fadeIn(1000);
//    $('#friendgroups').append(xhr.responseText);
  });

  $('[data-js-friendgroup-id]').on("ajax:success", function(event, data, status, xhr){
    var friendgroup_id = xhr.responseJSON.id;
    $('[data-js-friendgroup-id=' + friendgroup_id + ']').hide();
  });
});

Другой возможный виновник - ошибка консоли TypeError: url.indexOf is not a function, активируемая jQuery3, но это не имеет ничего общего с приведенным выше кодом.

Как эти кросс-модельные действия могут выполняться правильно?

1 Ответ

0 голосов
/ 25 апреля 2019

вопрос о плохих глазах

    $('#friendgroups').append(friendgroup);

вместо

    $('#friendgroups').append(friendgroups);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...