2013-02-21 4 views
0

Я прочитал Overriding named routes provided by Rails 3 Engines и запросил несколько свежих ответов, но все решения выглядят довольно грубыми, если вы забиты до . Удалите маршруты оптом.Удаление рельсов Маршруты двигателя

Prepending routes, чтобы переопределить маршруты двигателя, было эффективным; тем не менее, это занимает много времени, когда двигатель богат ресурсами. Сочетание ресурсов гнездования.

An::Engine.routes.prepend do 
    match "/route_goes_here" => redirect("/404") 
end 

В моем случае я хочу чувствовать уверенность, что все маршруты исчезли.

ответ

0

Если вы собираетесь удалить маршруты, вам также потребуется изменить другой код (подумайте о коде, который использует помощники путей, которые не будут определены после удаления маршрутов).

Для моего SuperDuper :: Engine я создал модуль SuperDuper :: Configuration. В config/routes.rb двигателя я определяю маршруты на основе конфигурации. Определите вспомогательные методы для визуализации ваших различных ссылок/форм/кнопок условно.

При переопределении настроек модуля конфигурации вы можете контролировать, будут ли включены маршруты двигателя при запуске приложения.

module SuperDuper 
    module Configuration 
    def self.documents=(bool) 
     @documents = bool 
    end 

    def self.documents 
     @documents.nil? ? true : @documents 
    end 
    end 
end