目标是删除一个项目;我得到了错误在我的路线中的印象:
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中的destroy动作:
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
如前所述,我得到的印象是我的路线,虽然我已经修补了一段时间。有谁看到我误解了什么?
谢谢。
答案 0 :(得分:0)
你不应该使用根路径,你应该使用项目路径
答案 1 :(得分:0)
问题在于:destroy
定义了DELETE
route for /:id
, not for /
。您只能删除某些内容而不是所有内容。
您的link_to
应该链接到特定项的删除路径,而不是root_path
或项目索引:
<%= link_to "Done!", item, method: :delete, class: 'glyphicon glyphicon-ok' %>