2011-02-09 37 views

Respuesta

43

request.path debe devolver lo que está buscando si no está preocupado por el nombre de host. De lo contrario podría probar:

url_for(:only_path => false, :overwrite_params=>nil) 
+1

también me encontré con el problema parámetros recursivas, '/ controlador/acción? Parámetro = 1? PARAM = 2? Parámetro = 3', pero el request.path trabajaron excelente para mí. –

+0

El problema con el método anterior es que si hay varias rutas para el mismo tipo de recurso (por ejemplo, para una publicación donde algunas cosas se etiquetan "/ noticias/nombre-post" y otras "/ nombre-blog/nombre-post")), entonces podrías volver al camino equivocado. – thekingoftruth

+0

@thekingoftruth Eso es cierto, pero se usará la ruta de mayor prioridad, así que asegúrese de ordenarlos correctamente. – tadman

8

utilizo el siguiente:

request.original_url.split('?').first 

No se regenera el camino, y por lo tanto le da exactamente la dirección URL que el usuario final ve en su navegador, menos consulta parámetros.

+0

¡Agradable! También el terser 'request.url.split ('?'). First' funcionó para mí. – Franco

+0

@Franco Creo que 'request.url' está en desuso, pero no estoy seguro. – thekingoftruth

+1

Esto es más flexible, ya que también puede funcionar con 'request.referrer'. – steel

8

Para obtener la URL de solicitud sin ningún parámetro de consulta.

def current_url_without_parameters 
    request.base_url + request.path 
end 
Cuestiones relacionadas