2011-06-11 72 views
1

我有圖像列表和每個圖像我有鏈接刪除。這鏈接看起來這樣:Rails 3 - 鏈接刪除項目

<%= link_to 'delete image', {:controller => 'shops', :action => 'delimg', :imgid => u.id}, :confirm => 'Really?' %> 

高清標誌 放PARAMS [:imgid] ... 結束

而且我得到一個錯誤無法與ID =標識找到店app/controllers/shops_controller.rb:17:在'show' - 我試着加puts'IN SHOW它真的看起來,那個點擊那個鏈接之後就叫方法顯示。我不知道,怎麼可能...

有人可以幫助我,請問問題在哪裏?

+0

如何你的路由看起來像添加的路徑幫手? 'delimg'是商店資源的成員路線嗎? – DanneManne 2011-06-11 10:23:50

+0

在routes.rb我有資源:商店 得到'商店/索引' 得到'商店/標誌' 。行動'delimg'在類'shops_controller' – user1946705 2011-06-11 10:32:37

+0

你有沒有定義路由的delimg?如果沒有,那麼在routes.rb – 2011-06-11 10:38:47

回答

1

這可能是我會怎麼做它:

#routes.rb 
resources :shops do 
    delete :delimg, :on => :member 
end 

通過補充說,將有一個定義路線到映射到刪除方法的delimg操作。這使得它可以做到在視圖:

<%= link_to 'delete image', delimg_shop_path(u.id), :method => :delete %> 

delimg_shop_path是存在因爲什麼是在routes.rb中

+0

謝謝!不知道該怎麼做。 :) – 2011-06-11 10:52:45

+0

謝謝,它的作品!但是我想問你 - 爲什麼我需要將這些信息添加到routes.rb(關於資源)以及爲什麼不足以將操作名稱添加到控制器以及「獲取(發佈)控制器/操作」?這應該是工作,或? – user1946705 2011-06-11 18:09:33

+0

這隻有在動態路由匹配':controller(/:action(/:id))'的情況下才有效,這是非常糟糕的做法。您應該在routes.rb中定義所有路由,以確保您知道所有可以工作的路由。 – DanneManne 2011-06-11 22:41:38

0

您在logo方法中顯示params [:ingid],但在指定delimg的操作鏈接中? modiefy你的鏈接爲

<%= link_to 'delete image', {:controller => 'shops', :action => 'logo', :imgid => u.id}, :confirm => 'Really?' %>

那麼它會工作