在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
有什么想法吗?
答案 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