如何为gem添加路由

时间:2017-03-17 18:55:38

标签: ruby-on-rails ruby

我正在创建一个我想用于某些Rails应用程序的新gem。我需要的是:

我想为不同的资源创建一些路由到同一个gem控制器。此外,我需要能够让用户告诉gem,而不是使用gem的默认控制器,它应该使用当前应用程序中的控制器(继承自gem中的控制器)。我认为这与Devise的相似,但我不完全理解它是如何工作的。

此外,我已经尝试使用自定义引擎,但这会创建一些全局路由,我无法创建特定于某些资源的路由。

理想的用例是这样的:

Rails.application.routes.draw do
  # Some routes
  resources :users do
    Gem::Routes.define # Or something similar
  end

  resources :admins do
    Gem::Routes.define to: AdminController # Or something similar
  end
end

我希望路线的创建方式如下:

POST   users/:id/something    gem_controller#something
POST   users/:id/something2   gem_controller#something2
POST   users/:id/something3   gem_controller#something3

POST   admins/:id/something    admins_controller#something
POST   admins/:id/something2   admins_controller#something2
POST   admins/:id/something3   admins_controller#something3

提前致谢!

1 个答案:

答案 0 :(得分:0)

这将有效:

Rails.application.routes.draw do
  concern :whatever do
    member do
      post :something
      post :something2
      post :something3
    end
  end

  resources :users, controller: 'gem' do
    concerns :whatever
  end
  resources :admins, controller: 'admin' do
    concerns :whatever
  end
end