2011-06-26 20 views
12

Przenoszę istniejącą stronę z PHP na Ruby na Rails 3 i muszę zachować niezmienione adresy URL.Jak wygenerować linki z ukośnikiem w Rails 3?

mam trasy:

get 'companies/' => 'companies#index', :as => :companies 

w pliku widoku mam:

link_to 'Companies', companies_path 

a to generuje URL "http://website.com/companies" zamiast „http : //website.com/companies/ ".

Chcę ukośnik na końcu adresu URL. Czy to możliwe?

+0

mogę zapytać? Dlaczego musisz zachować to cięcie? (nie jest to metoda RESTful) – bor1s

+0

Ma to na celu SEO. Strona z tym adresem URL już istnieje i przekierowanie w tym przypadku nie jest rozwiązaniem. –

+1

Potrzebuję ukośnych ukośników dla adresów URL – hiroshi

Odpowiedz

38

Można dodać do swojej environment.rb:

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

ten sposób wszystkie drogi będą generowane z tylnego ciąć automatycznie , bez konieczności modyfikowania każdego łącza w projekcie.

22

Wystarczy zrobić w następujący sposób:

link_to 'Companies', companies_path(:trailing_slash => true) 

Documentation here.

+0

Awesome! Nie wiedziałem o opcji ': trailing_slash'. –

+1

Wielkie dzięki! To działa! Ale może wiesz, czy istnieje sposób, aby szyny automatycznie dodawały ukośny slash, jeśli jest obecny w wzorcu adresu URL w routes.rb? –

+0

Jeśli wiesz, daj mi rozwiązanie tutaj: [link] (http://stackoverflow.com/questions/6486758/how-to-make-rails-do-not-ignore-trailing-slashes-in-- trasy) –

0

Na szynach 3.2:

Rails.application.routes.default_url_options[:trailing_slash]= true 
3

nie mogłem znaleźć żadnych odniesień, ale dodanie trainling_slash: true definicji trasy działa również (i unika powtarzania siebie).

get 'companies/' => 'companies#index', :as => :companies, :trailing_slash => true 

ten został przetestowany z Rails 3.2.13:

rails c 
1.9.3p327 :005 > app.companies_path 
=> "http://www.example.com/companies/ 
+0

Ładne rozwiązanie, jeśli chcesz zastosować to do konkretnej trasy –