2015-03-01 5 views
7

Immaginiamo, ho una rotta definita come la seguente:Come ottenere il percorso della rotta url attuale nei binari?

constraints MyRouteConstraint.new do 
    get ':param/:param1/:param2', to: 'controller#action' 
end 

Come posso ottenere il modello ': param /: param1 /: param2' in mio controller? So che c'è Rails.application.routes.recognize_path "/ param/param1/param2", ma genera un errore 'Nessun percorso corrisponde'

aggiornamento:

Rails.application.routes.router.recognize(request) do |route, matches, parameters| 
    return route.path.spec.to_s if route.path.required_names.all? { |p| request.params.keys.include? p } 
end.flatten.compact.first 

risposta

0

Non troppo sicuro se questo è ciò che stai cercando, questo è pensato per essere usato nelle tue opinioni.

Si può provare request.fullpath

Restituisce il percorso completo String compreso params dell'ultimo URL richiesto.

# get "/articles" 
request.fullpath # => "/articles" 

# get "/articles?page=2" 
request.fullpath # => "/articles?page=2" 

vedi Documentazione qui:

http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-original_url

+0

No, mi piacerebbe avere ': param /: param1 /: param2' esattamente. vedi aggiornamento –