2017-03-01 3 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

없습니다. 이 URL은'http : // localhost : 3000/fr/bla/foo/bar? locale = eng' URL을 생성합니다. ' – thiebo

+0

@thiebo이 작업에 대한 경로를 게시 할 수 있습니까? 'params '는 대개'?'다음이나 post 조치에 있습니다. – Ruslan

0

이 솔루션이었다 위해 일할 수 : 불행하게도

<%= link_to 'nl', url_for(:locale => 'nl') %> 
관련 문제