没有路由匹配进行删除和更新

我知道很多次都会问这个问题,但到目前为止,没有一个食谱对我有所帮助。

我有一个用Ruby 2.0.0编写的应用程序,Rails 4.0.0以及以下routes.rb:

resources :announcements do end 

这会产生以下路线:

  announcements GET /announcements(.:format) announcements#index POST /announcements(.:format) announcements#create new_announcement GET /announcements/new(.:format) announcements#new edit_announcement GET /announcements/:id/edit(.:format) announcements#edit announcement GET /announcements/:id(.:format) announcements#show PATCH /announcements/:id(.:format) announcements#update PUT /announcements/:id(.:format) announcements#update DELETE /announcements/:id(.:format) announcements#destroy 

然后在HTML中我使用非常简单的构造:

  

其中产生以下代码:

 

一切看起来都很简单,干净,正确。 不过我收到“No Route Matches”错误。 为什么?

问题在于缺少中间件。 我已经添加了

 config.middleware.use Rack::MethodOverride 

/config/application.rb

尝试

 <%= button_to "Delete", {:controller => :announcements, :action => 'destroy', :id => announcement.id }, :method => :delete %> 

那是因为这些路径的路由需要:method => :delete (删除路径)& :method => :put (更新路径)。 POST也无效

根据Rails文档 :

在Rails中,资源丰富的路由提供HTTP谓词和URL与控制器操作之间的映射。 按照惯例,每个操作还映射到数据库中的特定CRUD操作

您还需要使用announcement_path作为URL帮助程序

    Interesting Posts