我什么时候应该在Rails中创建命名路由?

时间:2012-12-17 14:40:29

标签: ruby-on-rails rails-routing

我对Rails 3资源路由感到困惑。我的routes.rb

中有以下一行
resources :dungeons, only: [ :index, :destroy, :create, :update, :show ]

当我检查使用rake routes创建的命名路由时,我得到:

dungeons GET    /dungeons(.:format)                                    dungeons#index
         POST   /dungeons(.:format)                                    dungeons#create
 dungeon GET    /dungeons/:id(.:format)                                dungeons#show
         PUT    /dungeons/:id(.:format)                                dungeons#update
         DELETE /dungeons/:id(.:format)                                dungeons#destroy

为什么只有带有http get方法的路由的命名路由?如果我想创建一个指向destroy动作的链接,我必须使用类似{ :action => 'destroy', :method => :delete, :id => dungeon.id }的内容,而不仅仅是destroy_dungeon_path( dungeon )。我的routes.rb是否有问题?

1 个答案:

答案 0 :(得分:4)

您的路线文件没有错。这是销毁路线:dungeon_path(id)

您必须发送DELETE请求才能触发它。 show,update和destroy得到了相同的named_route,唯一不同的是Request的类型(GET for show,PUT for update或DELETE for destroy)

在这里,您需要知道在Rails3中路由的所有内容:http://guides.rubyonrails.org/routing.html