rails routing,添加路径名也保持旧网址正常工作

时间:2016-10-12 14:29:52

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

在我的路线文件中,当我改变

resources :foobar

resources :foobars, path: "foo-bars"

网址变为example.com/foo-barsexample.com/foo-bars/1等。 还行吧。

但我怎样才能保留原来的网址example.com/foobarsexample.com/foobar/3呢?

我知道,我可以硬编码,

get "foobars", to: 'foobar#index'
get "foobar/:id", to: 'foobar#show'
...   

但有没有一种干净的方法来实现这个?

1 个答案:

答案 0 :(得分:1)

定义两者

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