2017-03-01 20 views
0

私は自分のアプリケーションのコントローラでこのメソッドを持っている:私がやりたい何application_controllerでメソッドを呼び出すにはどうすればよいですか?

before_action :set_locale 

def set_locale 
    locale = params[:locale].to_s.strip.to_sym 
    I18n.locale = I18n.available_locales.include?(locale) ? 
    locale : 
     I18n.default_locale 
end 

def set_locale_or_redirect 
    unless no_locale_needed? 
     if params[:locale].present? 
      @current_locale = I18n.locale = params[:locale] 
     else 
      redirect_to locale: 'fr' 
     end 
    end 
end 

は(私もそこに私のナビゲーションメニューを持っている)、現在のURLを指しているが、ロケールを設定layouts/mylayout.html.erbのリンクを入れていますパラメータと電話set_locale

どうすればよいですか?

答えて

0

現在のページへのリンクを指す必要があります。この小さなクイックハックはあなた

link_to 'English', url_for('?locale=eng')

+0

ません。これは 'http:// localhost:3000/fr/bla/foo/bar?locale = eng'というURLを生成します。 ' – thiebo

+0

@thieboあなたはこのアクションのルートを投稿できますか? 'params'は通常、'? 'の後ろにあるか、またはポストアクションの中にあります – Ruslan

0

これが解決したために働くかもしれません:残念ながら

<%= link_to 'nl', url_for(:locale => 'nl') %> 
関連する問題