Я пытался реализовать функцию «изменить язык» в своем приложении. Я просмотрел официальное руководство http://guides.rubyonrails.org/i18n.html и все было ясно для меня. К сожалению, я не знаю, как исправить одну проблему. Например, когда я получаю доступ к форме входа по ссылке /en/login
, все в порядке, пока я не нажму на форму отправки.
После перенаправления параметр [: locale] не прошел как ожидалось, и я получаю локали по умолчанию. Есть ли какой-нибудь "Rails-way" соултинг для перенаправления с ранее выбранными локалями? Я полагаю, что каждый раз можно передавать параметр redirect_to
, но это проблематично для каждого контроллера.
Мои маршруты:
scope "(:locale)", :locale => /pl|en/ do
devise_for :users
resources :pages
get "/login" => "sessions#new"
post "/users/sign_in" => "sessions#create"
delete "/users/sign_out" => "sessions#destroy"
root :to => "pages#index"
resources :websites
end
match '/:locale' => 'pages#index'
Контроллер приложения:
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
end