添加自定义:使用Rails 3路由的新路由

时间:2010-06-15 11:04:30

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

在Rails 2中,我们可以为资源丰富的路由添加自定义new操作,例如:

map.resources :users, :new => {:apply => :get}

我们如何在Rails 3中实现同样的目标?

resources :users do

  get :apply, :on => :new    # does not work

  new do
    get :apply               # also does not work
  end

end

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

您可以在边缘路线指南中使用:path_names作为explained

resources :users, :path_names => { :new => "apply" }

这只会更改apply的路径,但仍会路由到new操作。我认为不再明确支持改变(这可能是一件好事)。

如果您想保留apply行动,您应该这样做:

resources :users, :except => :new do
  collection do
    get :apply
  end
end

但它让您想知道将apply操作重命名为new是否更好。

答案 1 :(得分:4)

试试这个:

resources :users, :path_names => { :new => 'apply' }

请注意,如果您要为所有路线重新映射new路线至apply,则可以使用范围:

scope :path_names => { :new => 'apply' } do
  # The rest of your routes go here...
end