为什么删除方法给我错误的路径? 同

我有简单的删除链接:

= link_to "Delete", messages_path(message.id), :method => :delete

给我错误: No route matches [DELETE] "/messages.316"

如何解决这个问题?

我有ruby 1.9.3p0 Rails 3.1.1

我的routes.rb

  resources :messages do collection do get :outbox end end 

当我将其更改为message_path我收到wrong number of arguments (0 for 1) – > full_trace: https ://gist.github.com/1967988
– >所有文件: https : //gist.github.com/1967994

  outbox_messages GET /messages/outbox(.:format) {:action=>"outbox", :controller=>"messages"} messages GET /messages(.:format) {:action=>"index", :controller=>"messages"} POST /messages(.:format) {:action=>"create", :controller=>"messages"} new_message GET /messages/new(.:format) {:action=>"new", :controller=>"messages"} edit_message GET /messages/:id/edit(.:format) {:action=>"edit", :controller=>"messages"} message GET /messages/:id(.:format) {:action=>"show", :controller=>"messages"} PUT /messages/:id(.:format) {:action=>"update", :controller=>"messages"} DELETE /messages/:id(.:format) {:action=>"destroy", :controller=>"messages"} 

编辑:发布 如何破坏多态模型? 方法破坏缺少的参数

你需要说message_path (单数),因为它是单个消息的路径:

 link_to "Delete", message_path(message.id), :method => :delete 

您正在使用错误的URL帮助程序。 只需传递message变量作为link_to的第二个参数。

例:

 = link_to "Delete", message, :method => :delete 

你想要message_path(message)而不是messages_path。 messages_path返回索引。