Я начал изучать Rails и попытался применить AJAX с некоторыми записями, которые динамически добавляются в список. Затем я хочу удалить несколько записей, которые выбраны с помощью флажков непосредственно в списке.Rails 4: динамически добавленные флажки не отправляются
Он работает нормально, но не тогда, когда я создаю новую запись и хочу ее удалить, не обновляя страницу. Ответ заголовка: «ActiveRecord :: RecordNotFound в AccountsController # destroym». Он действует так, как будто я нажимаю кнопку без проверки моих флажков.
Спасибо за вашу помощь :)
accounts_controller.rb
def destroym
Account.destroy(params[:delete])
respond_to do |format|
format.html {redirect_to accounts_path}
format.js #render accounts/destroym.js.erb
end
end
_row.html.erb
<% @data = Account.find(id) %>
<tr id='tr<%= @data.id %>'>
<td><%= @data.id %></td>
<td><%= @data.login %></td>
<td><%= check_box_tag 'delete[]', @data.id %></td>
</tr>
index.html.erb
<table class="table table-striped table-hover " id="accountsListing">
<%= form_tag destroym_accounts_path, method: :DELETE, remote: true, id: "deleteForm" do %>
<thead>
<tr>
<th>#</th>
<th>Username</th>
<th>Password</th>
<th>Website</th>
<th>Date</th>
<th>Editer</th>
<th><%= submit_tag "delete" %>
<%= link_to "Delete", '', :onclick => "$('#deleteForm').submit()", id: "removePwd", class: "text-danger", remote: true, method: :DELETE %> </th>
</tr>
</thead>
<tbody>
<% @accounts.each do |account| %>
<%= render 'row', id: account.id %>
<% end %>
</tbody>
<% end %>
</table>
destroym.js.erb
$("#accountsListing input:checked").closest("tr").remove();
create.js.erb
$("#accountsListing tr:first").after("<%= escape_javascript (render 'row', id:@account.id) %>");
Благодаря Вен. Что касается 1), я предпочитаю это решение. Я заменил destroym.js.erb на '$ (« # accountsListing input: checked »). Closeest (« tr »). FadeOut ('slow');' Но я все еще не могу удалить более одного раза. Спасибо – JulienP
На самом деле, сейчас я вижу ошибку в консоли: 'ActiveRecord :: RecordNotFound в AccountsController # destroym Не удалось найти аккаунт с идентификатором«»= 100' 100 является идентификатор кулака счета у меня есть удален. Это как каждый флажок, который я проверяю после, указывается с идентификатором первого удаления ... – JulienP
Проблема в том, что ваш 'fadeOut' будет ** не ** удалять элемент из DOM. Таким образом, каждый раз, когда вы отправляете снова, другие флажки по-прежнему отправляются (хотя они «невидимы»). – Ven