/ / Получаване на локал от обхвата в routes.rb? - рубинки на релси, рубин, рубин на релси-4, маршрути, локал

Да получите локал от обхвата в routes.rb? - рубинки на релси, рубин, рубин на релси-4, маршрути, локал

Имам следното по моите маршрути

scope "/(:locale)", locale: /en|fr/, constraints: LocaleConstraint do
# I want to be able to detect the locale that was used in the URL
get "/tool" , redirect_to(/a_certain_page)
end

Сега в зависимост от локала, който е в URL адреса, искам да пренасочвам към различни страници.

По принцип искам следното:

get "/fr/tool", redirect_to(/tool_in_french)
get "/en/tool", redirect_to(/tool_in_english)

Очаквах нещо като:

scope "/(:locale)", locale: /en|fr/, constraints: LocaleConstraint do
get "/tool" => locale == :fr ? redirect_to(/tool_in_french) : redirect_to(/tool_in_english)
end

Отговори:

0 за отговор № 1

Мисля, че е по-добра практика да се намери език в application_controller.rb с помощта на params.

private
def set_locale
session["locale"] = params[:locale] || session["locale"] || I18n.default_locale
I18n.locale = session["locale"]
end

Не съм сигурен какъв е инструментът за преводно с I18n това работи перфектно. В маршрутите трябва просто да добавите: locale към пакета като параметър. И това може да бъде принудено в application_controller.rb. Обхватът е правилен, без да е налице неизпълнение; Релси: как да се използва обхват с params и да се използва маршрут с стойност по подразбиране на парами

before_action :set_locale

Ако не използвате I18n, пак можете да използвате този метод, за да се свържете към различни папки за преглед и да преминете към правилния файл за преглед във всеки метод на всички контролери, много работа.

http://guides.rubyonrails.org/i18n.html