2010-04-05 9 views
7

En mi archivo application_helper.rb que tienen una función como esta:Rieles: ¿cómo puedo acceder al objeto de solicitud fuera de un helper o controlador?

def internal_request? 
    server_name = request.env['SERVER_NAME'] 
    [plus more code...] 
end 

Esta función es necesaria en los controladores, modelos y puntos de vista. Entonces, puse este código en un archivo de función de utilidad en el directorio lib/. Sin embargo, esto no funcionó: recibí quejas sobre request sin definir.

¿Cómo puedo acceder al objeto request en un archivo en el directorio lib/?

+0

El problema es más acerca de poner el código en un solo lugar. Tengo una función que usa el objeto de solicitud. Esta función se usa en vistas y controladores. Puedo duplicar el código en ambos lugares, pero parece más limpio colocar el código en el directorio lib/para que tanto las vistas como los controladores puedan acceder a la función única. – rlandster

+0

Su pregunta ya era mi respuesta ... Se puede acceder al objeto de solicitud desde un ayudante. ;-) – hurikhan77

Respuesta

2

Lo más simple que parece funcionar aquí es pasar el objeto de solicitud al método.

def internal_request?(request) 
server_name = request.env['SERVER_NAME'] 
[plus more code...] 
end 

El supuesto es cuando cada vez que este método se denomina solicitud se ha hecho, y que puede pasarlo al método.

Estoy tratando de pensar en un escenario donde un modelo necesitaría llamar a este método directamente. Parece más probable que desee comprobar si se trata de una petición interna en su controlador (márquelo como helper_method en su controlador si lo necesita en su vista), y luego dígale a su modelo que era una petición interna.

Cuestiones relacionadas