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

时间:2011-06-19 19:23:19

标签: ruby-on-rails ruby routes

我无法在这里或其他地方找到任何限制资源路由和在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中有一种首选的方法吗?

2 个答案:

答案 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”,它在路由和重置方面有两个相当不错的章节。

干杯