私は最近、I18nでRyan BateのRailscastをフォローして、複数の場所を追加し、URLParamsからロケールを設定しました。
www.example.com/en/
www.example.com/fr/
通常は問題なく機能しますが、URLから場所を手動で削除しようとすると、結果のリダイレクトが正しく形成されず、/が%2Fにエンコードされているように見えます。たとえば、URLをから削除した場合
www.example.com/fr/animals/horses
なので、www.example.com / animal / horses
次に、リダイレクトによって次のURLが生成されます:
www.example.com/fr/animals%2Fhorses
これが私のroutes.rbの一部です
scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do
resources animals
end
match '*path', to: redirect("/#{I18n.default_locale}/%{path}"), constraints: lambda { |req| !req.path.starts_with? "/#{I18n.default_locale}/" }
match '', to: redirect("/#{I18n.default_locale}")
CGI :: escapeを{path}に適合させる方法を見つけようとしていましたが、これまで試したことは何もうまくいきませんでした。この問題を解決するための正しいコードを知っている人はいますか?
Rails 3.2.6 / Ruby 1.9.2
ありがとう