2011-03-21 11 views
29

¿Cómo obtengo la ruta a un recurso en el modelo? Necesito almacenarlo en la base de datos y me gustaría la misma url que se obtiene de resourcename_path (recurso)Rieles, obtenga la ruta del recurso en el modelo

+2

Para obtener respuestas más completas, consulte http://stackoverflow.com/q/341143/793946 –

Respuesta

38

En Rails 3, puede incluir los helpers en modelos (aunque normalmente no es la mejor manera de tratar con cosas):

class MyClass < ActiveRecord::Base 
    include Rails.application.routes.url_helpers 
end 

En Rails 2, creo que es include ActionController::UrlWriter, pero no puedo recordar. Google es tu amigo.

+1

Carriles 2 es ActionView :: Ayudantes: UrlHelper y ActionController :: UrlWriter – jvatic

+0

Sus Rails 3 solución genera el siguiente error: RuntimeError : ¡Falta el host al que enlazar! Proporcione: parámetro de host o configure opciones_de_url predeterminadas [: host] – jvatic

+0

@jvatic. Si utiliza _url en lugar de _path, debe indicarle qué es el host. En las vistas puede tomar el host actual, pero los modelos no tienen conocimiento de eso y por lo tanto necesitan que se les diga qué usar. – idlefingers

60

En los carriles 3 y los carriles 4 que puede utilizar:

Rails.application.routes.url_helpers 

por ejemplo

Rails.application.routes.url_helpers.posts_path 
+1

Una hora de búsqueda y nadie logró dame una respuesta tan simple y clara como la tuya. Muchas gracias. – dimitarvp

+3

FYI, si necesita acceder a las rutas de los motores, el equivalente es: MyEngineName :: Engine.routes.url_helpers.some_path –

+0

Gracias Theo! Justo lo que estaba buscando. – Docunext

Cuestiones relacionadas