Итак, у меня есть две модели. Услуги и доступность. У каждого объекта есть много возможностей. На странице моих объектов у меня есть частичная информация о всех доступных для текущего объекта.Обновление или обновление партитуры
Я пытаюсь разрешить операции CRUD с доступностью. Удалить работает нормально, я делаю это через ajax и использую jquery для удаления строки в таблице.
У меня возникли проблемы с созданием и обновлением. Я могу сделать их удаленно, но отражая изменение без перезагрузки страницы, было сильно.
Это то, что парциальное выглядит like:
<tbody class="availabilityContainer">
<% facility_availabilities?.each do |a|%>
<tr id="availability_<%= a.id %>">
<td id="date_<%= a.id %>"><%= a.start_time.strftime("%a, %b %d %Y") %></td>
<td id="time_<%= a.id %>"><%= a.start_time.strftime("%I:%M %p") %> - <%= a.end_time.strftime("%I:%M %p") %></td>
<td id="price_<%= a.id %>"><%= number_to_currency a.price %></td>
<td id="discount_<%= a.id %>"><%= number_to_percentage a.discount, precision: 0 %></td>
<td>
<!-- Purchase button -->
<%= link_to("<i class='fa fa-shopping-cart'></i>".html_safe, "#", class:"btn btn-xs btn-success") %>
<!-- Edit button -->
<!-- <button type="button" class="btn btn-xs btn-primary" data-toggle="modal" data-target="#editAvailability"><i class='fa fa-pencil'></i></button> -->
<%= link_to("<i class='fa fa-pencil'></i>".html_safe, edit_availability_path(a.id) , class:"btn btn-xs btn-primary", data:{toggle:"modal", target:"#editAvailability"}, remote: true) %>
<!-- Delete button -->
<%= link_to("<i class='fa fa-times'></i>".html_safe, availability_path(a.id), method: :delete, class:"btn btn-xs btn-danger", remote: true) %>
</td>
</tr>
<!-- Load Edit Availability Form -->
<div class="modal fade" id="editAvailability" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"></div>
<% end %>
</tbody>
Я пробовал некоторые вещи в JS:
// Hide modal on update
$("#editAvailability").modal("hide");
// Update view
$("#availability_<%= @availability.id %>").fadeOut(500,function(){
currentItem = $(this)
// Get the new object from the database (should just get it from the form but i'm committed now)
$.get('/availabilities/<%= @availability.id %>', function (data){
// Append new data to table or refresh partial somehow
}).done(function() {
// update the individual row and fade back in?
$("#availability_<%= @availability.id %>").fadeIn(500)
})
});
Если каждая ячейка 'td' имеет идентификатор, было бы проще отредактировать innerHtml для этих ячеек вместо создания новой строки? Я спрашиваю, потому что в каждой строке много кода кнопки, я не хочу воссоздавать через jQuery – Batman
Я написал о 'create' action. Как я понимаю, вы создаете новую строку в этом случае, верно ?. Об обновлении - '$ (" # td_id "). Html (" новый контент ")' должен работать – Cyrill
Да, мне нужно как создавать, так и обновлять, поэтому ваш ответ извините. У меня проблема, если я сделаю что-то вроде этого '$ (" td # date _ <% = @ availability.id%> "). Html (" <% = @ availability.start_time.strftime ('% a, % b% d% Y ')%> ")' Я получаю сообщение об ошибке: 'Uncaught Error: Синтаксическая ошибка, непризнанное выражение: #availability_ <% = @ availability.id% >' – Batman