rails 路由,添加路径名也让旧的 url 工作
rails routing, add path name also keep old urls working
在我的路由文件中,当我更改时
resources :foobar
到
resources :foobars, path: "foo-bars"
url 变为 example.com/foo-bars
、example.com/foo-bars/1
等。
还行吧。
但是我怎样才能同时保留旧网址,example.com/foobars
,example.com/foobar/3
也能正常工作?
我知道,我可以硬编码,
get "foobars", to: 'foobar#index'
get "foobar/:id", to: 'foobar#show'
...
但是有没有一种干净的方法来实现它?
定义它们
resources :foobars, path: "foo-bars"
resources :foobars, path: "foobars"
编辑:
对于自定义操作,而不是像这样为每个路径声明两次,
resources :foobars, path: "foo-bars"
collection do
get 'bulk_new'
patch 'bulk_create'
get 'bulk_edit'
patch 'bulk_update'
end
end
resources :foobars, path: "foobars"
collection do
get 'bulk_new'
patch 'bulk_create'
get 'bulk_edit'
patch 'bulk_update'
end
end
创建公共块并将其传递给两个资源方法调用。
common_block = lambda do
collection do
get 'bulk_new'
patch 'bulk_create'
get 'bulk_edit'
patch 'bulk_update'
end
end
resources :foobars, path: "foo-bars", &common_block
resources :foobars, path: "foobars", &common_block
在我的路由文件中,当我更改时
resources :foobar
到
resources :foobars, path: "foo-bars"
url 变为 example.com/foo-bars
、example.com/foo-bars/1
等。
还行吧。
但是我怎样才能同时保留旧网址,example.com/foobars
,example.com/foobar/3
也能正常工作?
我知道,我可以硬编码,
get "foobars", to: 'foobar#index'
get "foobar/:id", to: 'foobar#show'
...
但是有没有一种干净的方法来实现它?
定义它们
resources :foobars, path: "foo-bars"
resources :foobars, path: "foobars"
编辑:
对于自定义操作,而不是像这样为每个路径声明两次,
resources :foobars, path: "foo-bars"
collection do
get 'bulk_new'
patch 'bulk_create'
get 'bulk_edit'
patch 'bulk_update'
end
end
resources :foobars, path: "foobars"
collection do
get 'bulk_new'
patch 'bulk_create'
get 'bulk_edit'
patch 'bulk_update'
end
end
创建公共块并将其传递给两个资源方法调用。
common_block = lambda do
collection do
get 'bulk_new'
patch 'bulk_create'
get 'bulk_edit'
patch 'bulk_update'
end
end
resources :foobars, path: "foo-bars", &common_block
resources :foobars, path: "foobars", &common_block