9

Dodanie ukośnika w linkach jest łatwe z {: trailing_slash => true}, ale nie uwzględnia to sytuacji, w której użytkownik wpisuje niezasłany adres URL. Czy istnieje sposób na wymuszenie śledzenia ukośników poprzez przekierowania w routerze?Wymuszenie końcowego ukośnika w Routingu Railsów

get "/:controller/:id" => redirect{|params| "/#{params[:controller]}/#{params[:id]}/" } 

Powyższe prowadzi do okrągłej pętli.

Dlaczego?

krewny ogniwem "./subclass" na

/parent/1 

jest znacznie inna niż

/parent/1/ 

Odpowiedz

8

w pliku config/environment.rb, dodać

config.action_controller.default_url_options = { :trailing_slash => true } 

w Klasa aplikacji

+2

Nie sądzę, że jego rozwiązuje problem, o który go poproszono. Dodanie parametru config.action_controller.default_url_options = {trailing_slash: true} zapewnia tylko, że wygenerowane adresy URL w szynach zawierają końcowy ukośnik. Jeśli chcesz mieć pewność, że użytkownik ma końcowy ukośnik w swoim adresie URL żądania, jeśli wpisuje go ręcznie, potrzebujesz czegoś takiego: http://www.jumph4x.net/post/16395866916/ensuring-a-trailing-slash- in-rails-w-out –

+0

to już nie działa -1 –