2015-03-01 18 views
7

Pozwala wyobrazić, mam drogę zdefiniowaną jak następuje:Jak uzyskać bieżący wzór trasy url w szynach?

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

Jak mogę uzyskać wzór 'param /: param1 /: param2' w moim kontroler? wiem, że jest Rails.application.routes.recognize_path "/ param/param1/param2", ale zgłasza błąd 'nie pasuje' Route

zmiana:

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 

Odpowiedz

0

Nie jestem pewien, czy to jest to, co którego szukasz, ta funkcja ma być używana w Twoich poglądach.

Można spróbować request.fullpath

Zwraca String pełną ścieżkę wraz params ostatniego żądanego adresu URL.

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

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

Zobacz docs tutaj:

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

+0

nie, chciałbym dostać 'param /: param1 /: param2' dokładnie. patrz aktualizacja –