Вот один способ, который сработал для меня.
Он не «удаляет» маршруты, но позволяет вам контролировать их соответствие.Вы, вероятно, хотите, чтобы каждый запрашиваемый маршрут соответствовал чему-либо, даже если в нижней части находятся все 404.
Сначала будут загружены маршруты вашего приложения (MyApp / config / rout.rb) (если вы не изменилипроцесс загрузки по умолчанию).И маршруты, соответствующие первому, будут иметь приоритет.
Таким образом, вы можете переопределить маршруты, которые вы хотите явно заблокировать, или заблокировать их с помощью перехвата всех маршрутов внизу файла YourApp / config / rout.rb.
Именованные маршруты, к сожалению,похоже, следуют правилу ruby «последнее определение выигрывает».Поэтому, если маршруты названы, и ваше приложение или механизм использует эти имена, вам нужно определить маршруты как первым (так, чтобы ваш соответствовал первому), так и последним (так называемые маршруты указывают так, как вы предполагали, а не так, как определяет механизм.)
Чтобы переопределить маршруты движка после их добавления, создайте файл с именем что-то вроде
# config/named_routes_overrides.rb
Rails.application.routes.draw do
# put your named routes here, which you also included in config/routes.rb
end
# config/application.rb
class Application < Rails::Application
# ...
initializer 'add named route overrides' do |app|
app.routes_reloader.paths << File.expand_path('../named_routes_overrides.rb',__FILE__)
# this seems to cause these extra routes to be loaded last, so they will define named routes last.
end
end
. Вы можете проверить этот бутерброд маршрутизации в консоли:
> Rails.application.routes.url_helpers.my_named_route_path
=> # before your fix, this will be the engine's named route, since it was defined last.
> Rails.application.routes.recognize_path("/route/you/want/to/stop/gem/from/controlling")
=> # before your fix, this will route to the controller and method you defined, rather than what the engine defined, because your route comes first.
После вашего исправления эти вызовы должны совпадать.
(я изначально разместил это в google группе по переработке драгоценных камней здесь: https://groups.google.com/forum/?fromgroups#!topic/refinery-cms/N5F-Insm9co)