Используйте Engine Routes внутри Rails.application.routes.draw Rails 5.2 - PullRequest
0 голосов
/ 28 ноября 2018

В настоящее время я использую пользовательскую сборку гема, которая не была обновлена ​​для работы с Rails 5.2 на данный момент.Я извлек основные файлы, и теперь я столкнулся с проблемой, когда мне нужно получить доступ к маршрутам для внутреннего движка.Все папки для драгоценного камня имеют пространство имен payola - что позволяет мне получить доступ к его ресурсам.Как я могу настроить мои маршруты, чтобы принять во внимание маршруты пространства имен для драгоценного камня, не включая ссылку на сам механизм (который вызывает дубликаты).Мой файл маршрутов находится ниже.Когда я добавляю маршруты в Rails.application.routes.draw самостоятельно, он не может найти контроллеры для него.

rout.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

1 Ответ

0 голосов
/ 28 ноября 2018

Я создал модуль с областью действия, который будет отображать те же результаты, что и сам движок.

rout.rb

 scope :module => "payola" 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
...