Ruby on rails 删除操作在Rails中不起作用-缺少参数

Ruby on rails 删除操作在Rails中不起作用-缺少参数,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我试图在我的应用程序中添加一个删除操作,但我遇到了一个奇怪的错误“我很难找到。尽管我已将按钮指定给删除操作,但似乎正在触发创建操作。根据我单击delete按钮时的URL,它似乎使用了GET,我很确定这是不正确的 非常感谢您的帮助 这是我在索引视图中单击删除按钮时得到的结果 class DogsController < ApplicationController def create Dog.create(dog_params) @dogs = Dog.all re

我试图在我的应用程序中添加一个删除操作,但我遇到了一个奇怪的错误“我很难找到。尽管我已将按钮指定给删除操作,但似乎正在触发创建操作。根据我单击delete按钮时的URL,它似乎使用了GET,我很确定这是不正确的

非常感谢您的帮助

这是我在索引视图中单击删除按钮时得到的结果

class DogsController < ApplicationController
def create
    Dog.create(dog_params)

    @dogs = Dog.all
    redirect_to dogs_path
end

def new
    @dog = Dog.new
end

def edit
end

def delete
    @dog = Dog.find params[:id]
    @dog.destroy
    redirect_to dogs_path
end 

def show
    @dog = Dog.find params[:id]
end

def index
    @dogs = Dog.all
end

private

    def dog_params
        params.require(:dog).permit(:name, :breed)
    end
end
class DogsController
下面是索引视图的代码:

<h1>List of Dogs</h1>

<table>
<thead>
    <tr>
        <td>Name</td>
        <td>Breed</td>
        <td>Details</td>
    </tr>
</thead>

<% @dogs.each do |d| %>
    <tr>
        <td><%= d.name %></td>
        <td><%= d.breed %></td>
        <td><%= d.id %></td>
        <td><%= link_to 'Details', dog_path(d.id) %></td>
        <td><%= link_to 'Edit', edit_dog_path(d.id) %></td>
        <td><%= button_to 'Delete', :method => :delete %></td>
    </tr>
<% end %>
</table>
狗的列表
名称
繁殖
细节
:删除%>

Rails将在控制器中查找
销毁
而不是删除

def delete
更改为
def destroy

Aha还注意到您没有指定要删除的内容:

<%= button_to 'Delete', d, :method => :delete %>

Rails将在控制器中查找
destroy
notdelete

def delete
更改为
def destroy

Aha还注意到您没有指定要删除的内容:

<%= button_to 'Delete', d, :method => :delete %>

按钮\必须传入如下参数

button_to 'Delete', dog, method: :delete

按钮\必须传入如下参数

button_to 'Delete', dog, method: :delete

这是我的基础;我没有看到与删除操作关联的表单。我是否误解了这一点?谢谢这是我的基础;我没有看到与删除操作关联的表单。我是否误解了这一点?谢谢进行了更改,但仍然存在相同的问题。同样感谢您的优化提示。routes.rb中有什么内容?如果运行rake routes,您会看到什么?请注意,更新答案。您尚未设置要删除的对象。已设置完毕!我在想我是不是需要通过身份证什么的,看起来很奇怪。该示例使用了“post”而不是“p”,这解释了为什么我使用“dog”时它不起作用。谢谢你的帮助!进行了更改,但仍然存在相同的问题。同样感谢您的优化提示。routes.rb中有什么内容?如果运行rake routes,您会看到什么?请注意,更新答案。您尚未设置要删除的对象。已设置完毕!我在想我是不是需要通过身份证什么的,看起来很奇怪。该示例使用了“post”而不是“p”,这解释了为什么我使用“dog”时它不起作用。谢谢你的帮助!