/ / Configurando retorno de chamada do OAuth com o I18n em Ruby on Rails - ruby-on-rails, ruby-on-rails-3, oauth, internacionalização, rotas

Configurando o retorno de chamada do OAuth com o I18n em Ruby on Rails - ruby-on-rails, ruby-on-rails-3, oauth, internacionalização, rotas

No meu aplicativo Ruby on Rails, configurei o OAuth paratrabalhe usando a gema omniauth. Tudo está funcionando bem; no entanto, estou com dificuldades para fazer o trabalho assim que eu adiciono o I18n ao aplicativo. Especificamente, o problema é com o retorno de chamada. Como posso ajustar o meu código routes.rb para lidar corretamente com o retorno de chamada usando o I18n?

routes.rb

 scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do
resources :sessions, only: [:new, :create, :destroy]
root to: "static_pages#home"

match "auth/:provider/callback", to: "sessions#create"
match "auth/failure", to: redirect("/")
match "signout", to: "sessions#destroy", as: "signout"

match "/signin",  to: "sessions#new"
match "/signout", to: "sessions#destroy", via: :delete
end

match "*path", to: redirect {|params| "/#{I18n.default_locale}/#{CGI::unescape(params[:path])}" }, constraints: lambda { |req| !req.path.starts_with? "/#{I18n.default_locale}/" }
match "", to: redirect("/#{I18n.default_locale}")

application_controller.rb

   before_filter :set_locale
def set_locale
I18n.locale = params[:locale] if params[:locale].present?
end

def default_url_options(options = {})
{locale: I18n.locale}
end

Respostas:

0 para resposta № 1

A resposta a esta pergunta pode ser encontrada Aqui. O: locale precisa estar entre parênteses: scope "(:locale)"