2016-04-12 20 views
1

aşağıdaki kapsamına sahip yolları bir uygulamaya sahip yönlendirir. Hem http://myapp.com/en/foo hem de http://myapp.com/foo, aynı denetleyici # eylemine son verir. Harika çalışıyor.Raylar kapsamına sahip rotalar

Şimdi URL'deki yerel ayarlardan kurtulmak istiyorum, ancak eski yolların çalışmaya devam etmesini istiyorum, bu nedenle yalnızca kapsam ifadesini kaldırmanız işe yaramaz. Yerel olmayan URL'ye yönlendirilmek üzere eski yerel tabanlı URL'yi yeniden yönlendirmek istiyorum. Şunun gibi: bunu yapmak için kullanılan

http://myapp/en/foo yönlendirme

http://myapp/foo ve hala

http://myapp/foo çalışmak.

Şimdiye kadar, tek rotalar için Raylar kılavuzlarında yalnızca bir 'yönlendirme' seçeneği olan found. Ama bunun için bir dizi güzergâhı tutmak isterim; 'kapsam' bloğumdaki yollar.

Bu çalışma hakkında nasıl bir fikir var?

scope "(:locale)", :locale => Regexp.new(I18n.available_locales.join('|')) do 
    get '/en/:ccc' => redirect(path: "%{ccc}") 
end 

yol değişkeni önce çizgi gerekebilir ve elbette yapabilirsiniz:

+0

Hey! Cevap buradaydı: http://stackoverflow.com/questions/37147319/redirection-in-rails-4-routes/37147544#37147544 –

+0

@Hieu Pham Bana katıldığınız için teşekkürler, ancak çözümünüz bir yönlendirme yapmıyor: | – Stobbej

+0

Hey! Çözüm kabul edildi, benim cevabımın üstünde, bence işe yarayacak, uzun zaman önce sorunuzu işaretledim, şimdi bir çözüm gördüm, sadece farkettim :) –

cevap

0

Benim tahminim - - url farklı bir desen üzerinde deneyler sıyırma bir sürü gelen böyle bir şey sizin için çalışmış olurdu şerit çıkarmak için farklı bir dil koduna sahip olmak.

Buradaki büyük sıkıntı yönlendirme, hash veya dizeye bağlı olarak iki ayrı sınıf beslemesidir - OptionRedirect veya PathRedirect. Seçenek yönlendirme, yazım olarak değişkenlerle çok daha fazlasını yapmanıza olanak tanır.