2015-03-01 9 views
7

Lässt sich vorstellen, ich habe eine Route wie folgt definiert:Wie erhält man das aktuelle URL-Routenmuster in Schienen?

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

Wie kann ich das Muster erhalten ': param /: param1 /: param2' in meinem Controller? Ich weiß, es ist Rails.application.routes.recognize_path "/ param/param1/param2", aber es löst einen Fehler 'Keine Strecke Streichhölzer'

Update:

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 

Antwort

0

nicht sicher, ob dies ist, was Sie suchen, das soll in Ihren Ansichten verwendet werden.

können Sie versuchen, request.fullpath

den String vollständigen Pfad Kosten einschließlich params der letzten URL angefordert.

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

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

Siehe hier docs:

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

+0

nein, ich möchte bekommen ': param /: param1 /: param2' genau. siehe Update –

Verwandte Themen