Engine routes in Application Controller

前端 未结 5 2111
予麋鹿
予麋鹿 2020-12-29 10:20

I have a before_filter hook in my main app\'s application controller that does something like: (It doesn\'t just put a link in the flash, there is a message, but it isn\'t r

5条回答
  •  醉梦人生
    2020-12-29 10:57

    I figured out how to do this. The problems lies within the isolated namespace. In order to integrate the engine with the app and share the same layout (which may have path helpers from the main app) I did this:

    Firstly I removed config/routes.rb from the engine

    Then I removed the isolate_namespace from the engine class

    module MyEngine
       class Engine < Rails::Engine
    -    isolate_namespace MyEngine
       end
     end
    end
    

    I added a file that was loaded in the engine:

    module ActionDispatch::Routing
      class Mapper
        def mount_my_engine_at(mount_location)
          scope mount_location do
            #Declare all your routes here
          end
        end
      end
    end
    

    Finally, in the main app's config/routes.rb instead of 'mount'ing the engine, you can call your method

    mount_my_engine_at "mount_location"
    

    This will basically 'mount' your engine as part of the main app instead of being isolated from it. It is similar to how Devise does it too.

提交回复
热议问题