2016-04-22 17 views
0

目的はアイテムを削除することです。私は私のルートに誤りがある印象を受けます:[DELETE] "/"と一致するルートはありません。 ruby on rails

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 

部分は以下の通りです:

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 

<p><%= item.name %></p> 
<%= link_to "Done!", root_path, method: :delete, class: 'glyphicon glyphicon-ok' %> 

そして、念のために、次は私のitems_controllerで破壊するアクションです

先に述べたように、私は彼らがしばらく手間をかけていましたが、それは私のルートだと感じています。誰かが私が誤解したことを誰かが見ていますか?

ありがとうございます。

答えて

0

は、rootのパスを使用しないでください、あなたは問題が:destroyDELETE route for /:id, not for /を定義することで、アイテムのパス

+0

。だからitem_path( '@ item')私は思いますか? – karina

+0

それ、ありがとう! – sergio

+0

私は@ハムスに答えてくれます。彼はより完全な答えです...多分私は自分の電話から質問に答えようとしなくてはならないでしょう... – karina

0

を使用する必要があります。 何かを削除することはできますすべてではありません。

あなたlink_toないroot_pathやアイテムのインデックスに、特定の項目ため削除パスにリンクする必要があります:あなたが削除されている特定のアイテムのアイテムのパスを必要とする

<%= link_to "Done!", item, method: :delete, class: 'glyphicon glyphicon-ok' %> 
+0

これに変更してそれを働かせました: <%= link_to "Done!"、 ** item_path(item)**、メソッド::delete、クラス: 'glyphicon glyphicon-ok'%> ありがとうございます! – sergio

関連する問題