我无法在这里或其他地方找到任何限制资源路由和在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中有一种首选的方法吗?
答案 0 :(得分:17)
您可以将参数和块传递给resources
:
resources :sessions, :only => [:new, :create, :destroy] do
get :recovery, :on => :member
end
并使用rake routes
进行测试。
答案 1 :(得分:5)
它应该像这样工作
resources :sessions, :only => [:new, :create, :destroy] do
member do
get :recovery
end
end
正如coreyward提出的那样,还有一种更短的方式。
检查导轨指南“Rails Routing from the Outside In”。 我也可以推荐Obie Fernandez的“The Rails 3 Way”,它在路由和重置方面有两个相当不错的章节。
干杯