限制资源路由并在Rails 3中添加其他非RESTful路由

我无法在这里或其他任何地方找到限制资源路由和在Rails 3中添加其他非RESTful路由的任何内容。这可能非常简单,但我遇到的每个示例或解释只解决了一个案例,而不是两个同一时间。

这是我在Rails 2中所做的一个例子:

map.resources :sessions, :only => [:new, :create, :destroy], :member => {:recovery => :get}

非常简单,我们只需要7个RESTful路由中的3个,因为其他路由对此资源没有任何意义,但我们还想添加另一个用于帐户恢复的路由。

现在,从我收集到的任何一件事情中,其中一件事情也非常简单:

resources :sessions, :only => [:new, :create, :destroy]

就像在Rails 2中一样。并且:

 resources :sessions do member do get :recovery end end 

那么,我如何将这两者结合起来呢? 我还可以使用旧的Rails 2方式吗? 在Rails 3中有一种首选的方法吗?

您可以将参数和块传递给resources

 resources :sessions, :only => [:new, :create, :destroy] do get :recovery, :on => :member end 

并用rake routes测试它。

它应该像这样工作

 resources :sessions, :only => [:new, :create, :destroy] do member do get :recovery end end 

正如coreyward所提出的,还有一种更短的方式。

检查导轨导轨,“ 从外部进行导轨布线 ”。 我还可以推荐Obie Fernandez的“The Rails 3 Way”,它在Routing和RESt上有两个相当不错的章节。

干杯