Si defino una ruta dentro de un módulo, así:
class DrivenSignupPlugin::AccountController < ApplicationController
...
end
Entonces todas las llamadas a url_for
(incluso redirect_to
) en su interior será el prefijo :controller
parámetro con driven_signup_plugin/
.
Este no es el comportamiento deseado ya que este controlador usa muchas rutas fuera de él. Por ejemplo, render_access_denied
es un metodo de ApplicationController
.
Respuestas
0 para la respuesta № 1Para solucionar esto, agregue este método al controlador:
def default_url_options
# avoid rails" use_relative_controller!
{use_route: "/"}
end
Para Rails 4.2+, se necesita algo más complicado:
# inherit routes from core skipping use_relative_controller!
def url_for options
options[:controller] = "/#{options[:controller]}" if options.is_a? Hash and options[:controller]
super options
end
helper_method :url_for