Я пытаюсь обновить свой элемент списка после нажатия кнопки «Обновить» на моем модале.
Что я сделал до сих пор, так это то, что я поместил id
с contact.id
на <tr>
для справки, а затем использовал его на своем jQuery / Ajax.
Вот мой _listing.html.erb
:
<table class="table" id="contacts">
<% contacts.each do |contact| %>
<%= render partial: 'contacts/contact_item', locals: {contact: contact} %>
<% end %>
</table>
Вот мой _contact_item.html.erb
:
<tr id="contact_item_<%= contact.id %>">
<td class="middle">
<div class="media">
<div class="media-left">
<%= link_to contact_path(contact), ":data-target" => "#show-contact-modal", ":data-toggle" => "modal", remote: true do %>
<%= image_tag contact.contact_avatar.attached? ? contact.contact_avatar : "100x100.png", class: "media-object img-thumbnail img-rounded mr-3" %>
<% end %>
</div>
<div class="media-body mt-2">
<%= link_to contact_path(contact), ":data-target" => "#show-contact-modal", ":data-toggle" => "modal", remote: true do %>
<h4 class="media-heading"><%= contact.name %></h4>
<% end %>
<address>
<strong><i class="fa fa-map-marker"></i> <%= contact.city %>, <%= contact.state %>, <%= contact.country %>, <%= contact.zip %> </strong><br>
<i class="fa fa-envelope"></i> <%= contact.email %> | <i class="fa fa-mobile"></i> <%= contact.mobile %> | <i class="fa fa-phone"></i> <%= contact.phone %>
</address>
</div>
</div>
</td>
<td class="middle" width="100">
<div class="mt-5">
<%= link_to edit_contact_path(contact), class: "btn btn-outline-secondary btn-circle btn-xs", ":data-target" => "#new-contact-modal", ":data-toggle" => "modal", remote: true do %>
<i class="fa fa-edit"></i>
<% end %>
<div class="btn btn-outline-secondary btn-circle btn-xs delete-contact" data-id="<%= contact.id %>">
<i class="fa fa-times"></i>
</div>
</div>
</td>
</tr>
А вот мой update.js.erb
:
<% if @success %>
$('#new-contact-modal').modal('hide');
$("tr#contact_item_<%= contact.id %>").html("<%= j render 'contacts/contact_item', contact: @contact %>");
toastr.info('Contact was successfully updated.', 'info')
<% else %>
$(".errors").removeClass('hide');
<% @contact.errors.messages.each do |record| %>
<% key = record.first %>
var html = "<%= j get_error(@contact, key) %>";
$(".error-<%= key.to_s %>").html(html);
<% end %>
$('#save-btn').removeAttr("disabled");
<% end %>
В основном я я пытаюсь закрыть модальное окно после обновления, но в этом случае оно совсем не закрывается, и мне нужно обновить страницу sh, чтобы увидеть обновление, которое я не пытаюсь сделать, поскольку я использую ajax и jquery не делать никаких ссылок sh.
Кто-нибудь может увидеть, что мне здесь не хватает?