Ruby on rails 删除操作在Rails中不起作用-缺少参数
我试图在我的应用程序中添加一个删除操作,但我遇到了一个奇怪的错误“我很难找到。尽管我已将按钮指定给删除操作,但似乎正在触发创建操作。根据我单击delete按钮时的URL,它似乎使用了GET,我很确定这是不正确的 非常感谢您的帮助 这是我在索引视图中单击删除按钮时得到的结果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
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”时它不起作用。谢谢你的帮助!