Несколько флажков Удалить в Rails 6 - PullRequest
4 голосов
/ 20 сентября 2019

Я создаю функцию многократного удаления в моем приложении rails 6.

Итак, вот шаги, которые я сделал.

  1. Создан метод destroy_multiple
def destroy_multiple
  Page.destroy(params[:page_ids])
  redirect_to pages_path
end 
Отредактировал мой config->routes.rb
resources :pages do 
  collection do 
    delete 'destroy_multiple'
  end 
end

Установлено gem 'select_all-rails'

В мой app->javascript->application.js я включил необходимые коды для выбора всех рельсов js:

require("@rails/ujs").start()
Require ("turbolinks"). start ()
require("@rails/activestorage").start()
require("channels")

require("select_all.js")

$(function() {
  $("#selectAll").select_all();
});

import 'bootstrap'
import './stylesheets/application.scss'
Наконец, в свои представления я включил следующие коды:
    <section>
            <div class="container-fluid">
              <!-- Page Header-->
              <header> 
                <h1 class="h3 display">Pages</h1>
              </header>
              <div class="row">
                <div class="col-lg-12">
                  <div class="card">
                    <div class="card-header">
                      <h4>List of Pages</h4>
                    </div>
                    <div class="card-body">
                      <div class="table-responsive">

    <%= form_tag destroy_multiple_pages_path, method: :delete do %>

                        <table class="table">
                          <thead>
                            <tr>
                             <th data-sort-ignore="true"> <input type="checkbox" id="selectAll"/></th>
                              <th>Id</th>
                              <th>Title</th>
                              <th>Summary</th>
                              <th>Date Created</th>
                              <th colspan="3">Action</th>
                            </tr>
                          </thead>
                          <tbody>
                          <% @pages.each do |page| %>
                          <tr>
                            <td><%= check_box_tag "pages_ids[]", page.id, false, class: 'selectable' %> </td>
                              <td><input type="checkbox" value="false"> </td>
                              <td scope="row"><%= page.id %></td>
                              <td><%= page.title %></td>
                              <td><%= page.body.truncate(60) %></td>
                              <td> <%= page.created_at.strftime("%B %d, %Y") %> </td>
                            <td><%= link_to "Show", page_path(page)%></td>
                             <td><%= link_to "Edit", edit_page_path(page)%></td>
                              <td><%= link_to "Delete", page_path(page), method: :delete, data: {  confirm: "Are you sure?" }%></td>
                            </tr>
                            <% end %>
                          </tbody>
                        </table>

    <%= submit_tag "Delete Selected", class: 'btn btn-primary btn-xs' %>

    <% end %>

                      </div>
                    </div>
                  </div>
                </div>

Когда я запускаю это, он правильно отображает мои флажки.Однако, когда я нажимаю на флажок сверху, он не выбирает все, и после нажатия кнопки удаления я получаю эту ошибку:

Couldn't find Page without an ID

Есть идеи, что я делаю неправильно?

...