0

我在使用RubyGems發佈該版本的人的建議中使用了Rails 4的路由篩選器的0.4.0.pre版本。當您在RubyGems網站上進行搜索時,您不會找到此版本。當我在GitHub上發佈關於現有問題的評論時,我發現了這一點。使用路由篩選器測試版的問題0.4.0.pre

https://rubygems.org/gems/routing-filter/versions/0.4.0.pre

我發現這個版本和一個我目前在我的Rails 3個應用程序使用之間的差異。我相信這是最新的0.3.1版本。有了這個gem,當按預期運行本地主機時,語言環境將包含在我的URL中和底部的調試信息中。但是,當我使用0.4.0.pre版本時,語言環境不會顯示在URL或調試信息中。我在標題部分的頂部有一個人可以選擇他們的區域設置的鏈接。點擊其中一個鏈接時,區域設置將顯示在URL中。當我點擊另一個鏈接(文本或圖標)時,語言環境消失,但語言環境設置在cookie中(假定不是,但現在會保留)。這些翻譯對於選定的語言環境是正確的,但除非我在鏈接中爲他們點擊了某個特定的內容,否則沒有人會知道該語言環境。這是一個問題,因爲現在我正在設置語言環境文件,並且它們都將用英語,直到我能夠獲得其他語言的翻譯。

這裏是我在兩個application_controller.rb應用程序中的代碼,我設置了語言環境並創建了一個cookie。

before_filter :set_locale 

private 
    def set_locale 
    I18n.locale = (params[:locale] if params[:locale].present?) || cookies[:locale] || 'en' 
    cookies[:locale] = I18n.locale if cookies[:locale] != I18n.locale.to_s 
    end 

這是我在config/routes.rb中的代碼。

filter :locale 

這是我的語言環境代碼在我的Rails 4應用程序的頭中。我在Rails 3.2.13應用程序中有類似的代碼。

<%= link_to_unless_current "English", locale: "en" %> <%= link_to_unless_current "Español", locale: "es" %> <%= link_to_unless_current "Français", locale: "fr" %> 

我不知道,如果問題出在0.4.0.pre寶石或者如果我需要在我的Rails應用4額外的i18n變化。從閱讀i18n文檔我沒有看到任何額外的我需要做的。沒有關於0.4.0.pre的具體文檔,所以我認爲我應該能夠做到我正在使用Rails 3版本的路由過濾器。

我已經在GitHub中的gem的issue部分發布了這個。我已經完成了關於使用這個版本的路由過濾器的在線搜索,但無法找到它們。我想上個月發佈了。

任何幫助,將不勝感激。

回答

0

看起來問題已經解決了區域設置不出現在URL中的問題。然而,我最終使用原生Rails代碼進行路由,因爲我有兩個生產應用程序,我已經在Rails 4中進行了重寫。