我正在尝试向我的应用添加删除操作,而且我遇到了一个奇怪的错误,我无法跟踪。即使我已将按钮分配给删除操作,似乎也会触发创建操作。当我点击删除按钮时,基于URL,似乎它可能正在使用GET,我很确定它不正确。
非常感谢任何帮助!
这是我在索引视图中点击删除按钮时获得的error 。
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
这里是索引视图的代码:
<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>
答案 0 :(得分:4)
Rails会在您的控制器中查找destroy
未删除。
将def delete
更改为def destroy
Aha还注意到你没有指定要删除的内容:
<%= button_to 'Delete', d, :method => :delete %>
同样在您的创建中,您将获取所有Dogs然后重定向哪个是浪费,请删除@dogs = Dog.all
查询。
@dogs = Dog.all
redirect_to dogs_path
答案 1 :(得分:0)
button_to必须传入像这样的参数
button_to 'Delete', dog, method: :delete