2016-04-12 7 views
1

私は、次のスコープのルートでアプリを持ってリダイレクトします。 http://myapp.com/en/foohttp://myapp.com/fooの両方は、同じコントローラ#まで動作します。よく働く。Railsはスコープのルートが

私はURL内のロケールを取り除きたいが、私は古いルートを使いたいので、単にスコープステートメントを削除するだけでは機能しない。古いロケールベースのURLをリダイレクトして、非ロケールのURLにリダイレクトしたいと思います。このように:

http://myapp/en/fooはそれを行うために使用されるように、まだ仕事にhttp://myapp/foo

http://myapp/fooにリダイレクトします。

これまでのところ、私はfoundしか、個々のルートのRailsガイドで 'リダイレクト'オプションを使用していません。しかし、私はこれがルートのコレクションのために保持することを望みます。私の 'scope'ブロックのルート。

これを行うにはどのようなアイデアがありますか?

+0

Hey!答えはここにありましたhttp://stackoverflow.com/questions/37147319/redirection-in-rails-4-routes/37147544#37147544 –

+0

@Hieu Pham私にご参加いただきありがとうございますが、あなたのソリューションはリダイレクトしません。 – Stobbej

+0

ちょっと!解決策が受け入れられた、それは私の答えの上にある、私はそれが動作すると思います、私は長い時間前にあなたの質問をブックマークしたので、今私は解決策を見た、ちょうどあなたに気づく:) –

答えて

0

私の推測 - このような何かがあなたのために働いているだろう - 異なるパターンで実験をストリッピングURLのロットから:パスは、変数の前にスラッシュが必要になることがあり、そしてあなたはもちろんのことができ

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

ストリップする言語コードが違う

リダイレクトは、ハッシュや文字列に応じて2つのクラスに分割されます(OptionRedirectまたはPathRedirect)。オプションのリダイレクトを使用すると、書いたときに変数を使ってさらに多くのことを行うことができます。

関連する問題