He estado luchando con las sutilezas del ayudante se esperaba desde el controlador y la pila predeterminados (default_url_options
, etc.) y no quería codificar el host.
Nuestros ayudantes de URL son proporcionados por nuestro módulo ingeniosa, por supuesto:
include Rails.application.routes.url_helpers
pero incluyen esto como es, y (1) el ayudante se va a buscar a default_url_options
, y (2) no lo hará saber sobre el host de la solicitud ni la solicitud.
La parte del host proviene de la instancia del controlador url_options
. Por lo tanto, yo paso el contexto regulador en mi anterior módulo, ahora una clase:
class ApplicationController
def do_nifty_things
HasAccessToRoutes.new(self).render
end
end
class HasAccessToRoutes
include Rails.application.routes.url_helpers
delegate :default_url_options, :url_options, to: :@context
def initialize(context)
@context = context
end
def render
nifty_things_url
end
end
no podrían ajustarse a todos los casos, pero ha sido útil para mí la hora de implementar una especie de intérprete personalizado.
En ninguna manera:
- si quieres acceder a las opciones de URL por defecto a la perfección, o el anfitrión de la solicitud, tiene que pasar controlador/solicitud de contexto en
- si sólo necesita la ruta , sin host, y no le importan las opciones de la url, puede hacer algunos métodos ficticios.
posible duplicado de [Can rieles de enrutamiento Ayudantes (es decir MyModel \ _PATH (modelo)) se utilizan en los modelos?] (Http://stackoverflow.com/questions/341143/can-rails-routing-helpers-ie -mmodel-pathmodel-be-used-in-models) –