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

aar*_*ell 6 routing ruby-on-rails ruby-on-rails-3

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

map.resources :users, :new => {:apply => :get}
Run Code Online (Sandbox Code Playgroud)

我们如何在Rails 3中实现同样的功能?

resources :users do

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

  new do
    get :apply               # also does not work
  end

end
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

mol*_*olf 6

您可以:path_names按边缘路线指南中的说明使用:

resources :users, :path_names => { :new => "apply" }
Run Code Online (Sandbox Code Playgroud)

这只会改变路径apply,它仍然会被路由到new动作.我认为不再明确支持改变(这可能是一件好事).

如果你想保持你的apply行动,你应该做:

resources :users, :except => :new do
  collection do
    get :apply
  end
end
Run Code Online (Sandbox Code Playgroud)

但它让你想知道将apply动作重命名为是不是更好new.