2012-04-25 38 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',退出鏈接,現在看起來像/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 =代替。

相關問題