我目前正在使用一个尚未更新为与 Rails 5.2 一起使用的 gem 的自定义构建。我已经提取了核心文件,现在我遇到了一个问题,我需要在内部访问引擎的路由。gem 的所有文件夹都有命名空间payola - 它允许我访问它的资源。如何设置我的路由以考虑 gem 的命名空间路由,而不包括对引擎本身的引用(这会导致重复)。我的路线文件如下。当我单独将路由添加到 Rails.application.routes.draw 时,它无法找到它的控制器。
路线.rb
Rails.application.routes.draw do
get 'mobile_search/index'
mount Payola::Engine => '/payola', as: :payola
mount ActionCable.server => '/cable'
require 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq'
mount Resque::Server, :at => "/resque"
mount CountryStateSelect::Rails::Engine, at: "/"
devise_for :admins
devise_for :users, path: '', path_names: {sign_in: 'login', sign_out: 'logout', sign_up: 'signup'}, controllers: {registrations: 'users/registrations'}
devise_scope :user do
put 'user_change_plan', :to => 'users/registrations#user_change_plan'
authenticated do
root to: 'user_dashboard#index', as: 'authenticated_user_root'
end
unauthenticated do
root to: 'home#index', as: 'unauthenticated_user_root'
end
end
devise_scope :admin do
authenticated do
root to: 'admin_dashboard#admin', as: 'authenticated_admin_root'
end
unauthenticated do
root to: 'home#index', as: 'unauthenticated_admin_root'
end
end
resources :after_registration_wizard, only: [:show]
root 'home#index'
end
# Payola
Payola::Engine.routes.draw do
match '/buy/:product_class/:permalink' => 'transactions#create', via: :post, as: :buy
match '/confirm/:guid' => 'transactions#show', via: :get, as: :confirm
match '/status/:guid' => 'transactions#status', via: :get, as: :status
match '/subscribe/:plan_class/:plan_id' => 'subscriptions#create', via: :post, as: :subscribe
match '/confirm_subscription/:guid' => 'subscriptions#show', via: :get, as: :confirm_subscription
match '/subscription_status/:guid' => 'subscriptions#status', via: :get, as: :subscription_status
match '/cancel_subscription/:guid' => 'subscriptions#destroy', via: :delete, as: :cancel_subscription
match '/change_plan/:guid' => 'subscriptions#change_plan', via: :post, as: :change_subscription_plan
match '/change_quantity/:guid' => 'subscriptions#change_quantity', via: :post, as: :change_subscription_quantity
match '/update_card/:guid' => 'subscriptions#update_card', via: :post, as: :update_card
match '/update_customer/:id' => 'customers#update', via: :post, as: :update_customer
match '/create_card/:customer_id' => 'cards#create', via: :post, as: :create_card
match '/destroy_card/:id/:customer_id' => 'cards#destroy', via: :delete, as: :destroy_card
mount StripeEvent::Engine => '/events'
end