目标是删除项目;我的印象是错误在我的路线中:
Rails.application.routes.draw do
devise_for :users
resources :users, only: [:show, :destroy]
resources :items, only: [:new, :index, :create, :destroy]
resources :welcome, only: [:index]
get 'items/new'
root 'items#index'
end
部分如下:
<p><%= item.name %></p>
<%= link_to "Done!", root_path, method: :delete, class: 'glyphicon glyphicon-ok' %>
以防万一,以下是我items_controller中的销毁操作:
def destroy
@item = Item.find(params[:id])
if @item.destroy
flash[:notice] = "You accomplished a task!"
redirect_to root_path
else
flash.now[:alert] = "There was an error deleting the task. Try again."
end
end
如前所述,我的印象是这是我的路线,尽管我已经修补了一段时间。有人看到我误解了什么吗?
谢谢。
不应使用根路径,而应使用项目路径
问题是:destroy
为/:id
定义了一条DELETE
路由,而不是为/
定义了一条路由。您只能删除某些内容,而不能删除所有内容。
您的link_to
应链接到特定项目的删除路径,而不是链接到root_path
或项目索引:
<%= link_to "Done!", item, method: :delete, class: 'glyphicon glyphicon-ok' %>