0

我需要向名为Things的资源添加第二个“新”操作(称为 *different_new*) 。我希望它解决:

things/different_new

我在我的 *things_controller.rb* 上定义了一个 different_new 操作

按照rails guide to routing,我看到了这个添加自定义操作作为路由的示例:

resources :photos do
  member do
    get 'preview'
  end
end

但是,像这样添加的任何操作都会添加到特定资源中。例如,上面将导致这样的路线:

照片/:photo_id/预览

所以这对我不起作用,因为我希望该操作是创建新资源的位置,而不是针对已创建资源的操作。

我该如何解决这个问题?

4

2 回答 2

3

与member类似,还有一个collection选项:

resources :photos do
  collection do
    get 'preview'
  end
end

或者对于您的情况:

resources :things do
  collection do
    get 'different_new'
  end
end

这在导轨布线指南的第 2.9.2 节中进行了描述。

于 2012-06-19T14:08:00.973 回答
2

新操作(在这种情况下是您的different_new操作)与任何现有资源无关,因此它应该是一个收集路线:

resources :things do
  get :different_new, :on => :collection
end

它会生成一个类似的路径things/different_new。但是,与预定义的new操作 url 帮助器不同,它将是复数 - different_new_things_path

于 2012-06-19T14:07:18.023 回答