【发布时间】:2016-04-21 19:27:11
【问题描述】:
我开始学习 Rails 并尝试将 AJAX 与一些动态添加到列表中的记录一起应用。然后我想直接在列表中删除通过复选框选择的多条记录。
它工作正常,但当我创建一个新记录并想在不刷新页面的情况下删除它时就不行了。标头的响应是:“ActiveRecord::RecordNotFound in 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) %>");
【问题讨论】:
标签: javascript ruby-on-rails ajax activerecord