Aquí hay una manera que me funcionó.
No "elimina" las rutas, pero le permite controlar dónde coinciden. Es probable que desee que cada ruta solicitada coincida con algo, incluso si se trata de una captura de 404 en la parte inferior.
Sus rutas de aplicación (MyApp/config/routes.rb) se cargarán primero (a menos que haya modificado el proceso de carga predeterminado). Y las rutas que coincidan primero tendrán prioridad.
Para que pueda redefinir las rutas que desea bloquear explícitamente, o bloquearlas con una ruta catch all en la parte inferior del archivo YourApp/config/routes.rb.
Las rutas con nombre, lamentablemente, parecen seguir la regla de "última definición gana" de ruby. Entonces, si las rutas son nombradas y su aplicación o el motor usa esos nombres, necesita definir primero las rutas (por lo tanto, la suya es la primera) y la última (las rutas denominadas apuntan como usted lo pensó, no como lo define el motor)
Para redefinir rutas del motor cuando el motor se les añade, cree un archivo llamado algo así como
# 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
usted puede probar este sándwich de enrutamiento en la consola:
> 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.
después de su revisión, estas llamadas deben coincidir entre sí.
(I publicado esto originalmente en el grupo joya Google refinería aquí: https://groups.google.com/forum/?fromgroups#!topic/refinery-cms/N5F-Insm9co)
Me gusta esta solución elegante. Trabaja bien con las páginas de administración de _role. –
Probablemente también usaré este enfoque en el futuro, en lugar del enfoque que describí anteriormente. ¡Gracias! –
¡Solución dulce! ¡Gracias! – EDD