2012-04-25 18 views
3

マウント可能なアプリケーションに入ると、ロケールパラメータが重複するシナリオが見られます。私のアプリはそうのようになります。Rails 3.2マウント可能なアプリケーションロケールが複製される

#routes.rb 

resources :blogs 

scope "(:locale)" do 
    mount Auth::Engine => '/auth' 
end 

私は、ブログのページで午前と認証リンクを見れば、それはできるだけ早く私はマウントアプリによってレンダリングされるページにロードとしても機能しますが、それはこの/en-us/auth/signoutのように見え、例えばプロフィールページ/en-us/auth/myprofile'は、符号アウトリンクは、今、何が正しくlocaleパラメータを設定し、クエリ文字列でそれを複製するアプリを引き起こしている/en-us/auth/signout?locale=en-us

私が雑然となっクエリ文字列を望んでいないように見えますか?私の賭けは、アプリケーションのコントローラのようなものがあるということである

答えて

1

:あなたのエンジンコントローラは、アプリケーションのコントローラから継承しているので

def set_locale 
    # code here 
end 

def default_url_options 
    # code here 
end 

を、set_localeは二回トリガすることができます。

潜在的な解決策:コードがエンジンに含まれていることを確認し、ロケール設定を起動しないでください。

これはで行うことができます:self.controller_path().split("/").first == engine_name

1

私は同じ問題を抱えていました。私はコントローラ上でデフォルトのURLオプションを設定していました(default_url_optionsを再定義するか、self.default_url_options=を再定義します)。

解決策は代わりにRails.application.routes.default_url_options =を使用することでした。

関連する問題