2015-10-12 111 views
0

Rails 4.2應用程序。區域設置切換器。如何使用更改的區域設置重新導向?

在頁面的頁腳我有這樣的代碼:

footer.footer 
    .container 
     = form_tag set_locale_path, method: :post, id: 'set_locale' do 
      = select_tag "locale", options_for_select(I18n.available_locales, I18n.locale.to_s), onchange: ("$('#set_locale').submit();") 

和區域設置與set_locale動作控制器。

class LocalesController < ApplicationController 
    skip_before_filter :authenticate_user! 

    def set_locale 
    I18n.locale = params[:locale] 
    # redirect_to request.referrer 
    end 
end 

我必須通過request.referrer訪問以前的URL。看起來像:http://localhost:3000/en/users

有沒有任何方法可以更改區域設置而不需要gsub ing引用字符串?因爲如果沒有 - 應用程序將從引用網址將區域設置切換回:en

回答

0

我看不到一個簡單的解決方案,沒有gsubing字符串。如果語言環境設置爲get參數而不是路由的一部分,則會更容易。

http://localhost:3000/users?locale=en // Sets the locale to english 

在這種情況下,URL將保持不變,但語言環境會改變。

這是我要做的事在我的項目:

before_action :set_locale 

def set_locale 
    I18n.locale = locale || I18n.default_locale 
end 

def locale 
    return params[:locale] if ["sv", "en"].include? params[:locale] 
end 
+0

我用下面的代碼: 'redirect_to的request.referrer.gsub(%R {\ /#{PARAMS [:現場]} \/},「/#{params [:new_locale]} /」)' –