如何向路由Rails 3添加新的自定义资源

时间:2010-05-27 12:01:12

标签: ruby routes ruby-on-rails-3

如何在Rails 3路由中为新资源添加自定义路由?

我知道如何为集合和成员执行此操作,但此样式似乎不适用于新资源。这是一个错误还是我做错了什么?

所以这些工作:

collection do
  get :wish
end

member do
  get :wish
end

但这不起作用:

new do
  get :wish
end

2 个答案:

答案 0 :(得分:4)

试试这个:

resources :<resource name> do
  member do
    get '<custom action>'
  end
end

举一个例子,让我们看看你有一个名为'main'的控制器,如果你有一个自定义动作'dashbord'

resources :admin do
  member do
    get 'dashbord'
  end
end

答案 1 :(得分:1)

换句话说,您希望匹配以下内容:

example.com/foos/new/custom而不是example.com/foos/1/custom/example.com/foos/custom

这不是RESTful,这意味着它没有自动路由。你应该能够使用非资源路由来做到这一点,即这样的事情应该有效:

match 'resource/new/custom'=>'resource#custom'

...其中'custom'是控制器中的操作名称。

有关更多选项和详细信息,请参阅the rails guide