2011-05-09 12 views
25

una pregunta idéntica se ha hecho antes AssetTagHelper::image_path outside views pero la solución no funciona para Rails 3.¿Cómo puedo usar image_path raíles del interior 3 controlador

Tengo un requisito en el que estoy regresando algunos datos usando el formato JSON y parte de los datos debe devolver la ruta completa de la imagen. Estoy construyendo la respuesta en el controlador y llamando a render: json. También estoy especificando un asset_host en environment.rb, así que necesito una forma de incluir eso en los datos devueltos desde dentro de un controlador de Rails.

Respuesta

39

Puede usar view_context en su controlador al hacer tareas 'ver' como generar enlaces. Lo bueno de esto es que no tiene que incluir los ayudantes de vista en su controlador.

p. Ej. en su controlador puede crear una variable que será un enlace html con link_to o url_for si solo desea el enlace, la opción 'only_path' configurada como falsa debería proporcionarle la url absoluta.

link = view_context.url_for(:action => 'login', :controller => 'members', :only_path => false) 

Espero que esto ayude.

+0

Eso es un gran consejo. ¡Ojalá fuera más obvio, gracias! –

+0

Para mí, necesitaba generar una url de imagen CSS para un activo que tiene un resumen en el nombre del archivo. Gracias a ti, Barlow, se me ocurrió esto: '" url (# {view_context.asset_path ('dir/filename.png')}) "' –

Cuestiones relacionadas