2015-04-26 49 views
0

在開發模式下一切正常。但不是在heroku上的生產模式。RubyOnRails - 刷新頁面時不保留所選語言

當我選擇一個語言環境並刷新頁面時,它會默認顯示語言的一半時間和我選擇的語言。我不知道該怎麼辦。我試圖用Rails.cache.clear命令清除緩存,但它不起作用。我想問題是與緩存系統。我是紅寶石新手。有人會有一個想法如何解決這個問題?

爲了解我的問題,你可以去我的網站,選擇法語並多次刷新頁面。一旦頁面是法文的。另一次用英語。

https://releaseit.herokuapp.com/

我application_controller:

before_action :set_locale 
    def set_locale 
    if params[:locale].in? %W(en fr) 
     I18n.locale = params[:locale] 
    end 
    end 

的配置文件是相同的,如下:https://github.com/starterkits/rails4-starterkit/tree/master/config

對不起,我的英語(我是法國人,我用谷歌翻譯)

+0

您是如何配置語言首選項的?你可以添加一些代碼嗎?現在不可能說出現問題。 – fivedigit

+0

是的,我編輯了我的問題 – Kevin

回答

1

我不知道(或看不到)你在URL中傳遞locale的位置。據我所知,爲了使用params[:locale]您的網址應該是這樣的:

https://releaseit.herokuapp.com/fr/something 
https://releaseit.herokuapp.com/en/something 
https://releaseit.herokuapp.com/en 
https://releaseit.herokuapp.com?locale=fr 

http://guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-url-params

更重要的是盡我set_locale方法:

def set_locale  
    if params[:locale] 
     I18n.locale = params[:locale] || I18n.default_locale 
    else 
     I18n.locale = http_accept_language.compatible_language_from(
     I18n.available_locales 
    ) 
    end 
    end 

set_locale方法應該執行每次頁面重新加載以每次設置適當的區域設置。

它需要從http_accept_language寶石:https://github.com/iain/http_accept_language

退房也route_translator寶石創建與區域路線。

+0

我搜索了很長時間來解決我的問題。我確信我應該調用我的set_locale函數一次,因爲該網站仍然是選定的語言。萬分感謝。 – Kevin

+0

嗯,我沒有提到這一點,但我很高興你根據我的回答計算出來。我會更新它。 – jmarceli