PROSY с I18n и Redirects (ROR) Parameter меняется
-
12-11-2019 - |
Вопрос
Я пытался реализовать функцию «Изменить язык» в моем приложении.Я просмотрел официальный гид http://guides.rubyonrails.org/i18n.html иВсе было ясно для меня.К сожалению, я не знаю, как исправить одну проблему.Например, когда я получаю доступ к форме входа через ссылку /en/login
, все хорошо, пока я не нажму на форму отправки.
После перенаправления param [: locale] не передается как ожидалось, и я получаю локали по умолчанию.Есть ли «рельсы-путь», чтобы перенаправить с ранее выбранными медами?Думаю, что можно пройти каждый раз для 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
. Решение
Как то же самое руководство рекомендуется, вы можете добавить
class ApplicationController < ActionController::Base
def default_url_options(options={})
{ :locale => I18n.locale }
end
.
Это перенаправляет вашего пользователя на правильную локализованную страницу root
localhost:3000/?locale=pl
localhost:3000/?locale=en
....
. Другие советы
попробуйте это
before_filter :check_for_previous_locale_in_cookie
def check_for_previous_locale_in_cookie
I18n.locale = cookies[:last_seen_locale].blank? ? cookies[:last_seen_locale] : (cookies[:last_seen_locale] = params[:locale] || I18n.default_locale )
end
.