如何删除rails中的所有录音?

How to delete all recordings in rails?

我需要制作端点/产品 这将从存储中删除所有产品。但我不明白如何制作这个, 现在我有删除方法,即按 ID 只删除一个产品 这是我的控制器

  # DELETE /products/1 or /products/1.json
  def destroy
    @product.destroy
    respond_to do |format|
      format.html { redirect_to products_url, notice: "Product was successfully destroyed." }
      format.json { head :no_content }
    end
  end


我的index.html

<p id="notice"><%= notice %></p>

<h1>Products</h1>

<table class="table table-striped ">
  <thead>
    <tr>
      <th>Name</th>
      <th>Price</th>
      <th colspan="3"></th>
    </tr>
  </thead>

  <tbody>
    <% @products.each do |product| %>

      <tr>
        <td><%= product.name %></td>
        <td><%= product.price %></td>
        <td><button type = 'button' class="btn btn-outline-info"><%= link_to 'Show', product %></td>
        <td><button type="button" class="btn btn-outline-success"><%= link_to 'Edit', edit_product_path(product) %></td>
        <td><button type="button" class="btn btn-outline-danger"><%= link_to 'Destroy', product, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>
<br>
<%= link_to 'New Product', new_product_path %>

和路线

Rails.application.routes.draw do
  resources :products
  root 'products#index'
end

我需要创建一个按钮来删除页面中的所有产品

这不是七个标准 REST 操作之一,因此您无法从此处的 rails 获得额外帮助。解决此问题的方法之一是定义自定义操作。

# routes.rb
resources :products do
  post :delete_all, on: :collection
end

# products_controller.rb
def delete_all
  Product.delete_all
  redirect_to :products_path
end

并插入一个 link/button,它执行 POST 到 /products/delete_all。应该看起来大致像这样:

link_to 'Destroy All', delete_all_products_path, method: :post, data: { confirm: 'Are you sure?' }