2011-06-11 78 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?' %>

那么它会工作