У меня проблема, когда я пытаюсь изменить локаль в своем веб-приложении. В режиме разработки (webrick) все в порядке, но когда я развертываю на своем prd env (Unicorn + NGINX), происходит странное поведение:
Для каждого флага я устанавливаю эту ссылку
<%= link_to "<button class='btn flag flag-#{lang}'></button>".html_safe, {controller: 'amministratore/localecontroller', action: 'set', locale: lang} %>
где lang
— локаль.
Внутри контроллера у меня есть эта простая логика:
def set
I18n.locale = params[:locale] || I18n.default_locale
redirect_to amministratore_items_url
end
Проблема в следующем: Когда я нажимаю на флаги (на dev все в порядке), страница не перезагружается, но меняется локаль (проверено с помощью <%=debug(params)%>
. Это означает, что другие URL-адреса внутри страницы (с параметром default_url_, который устанавливает текущий языковой стандарт для всех URL-адресов) имеют неверный языковой стандарт.
Пример
- Текущее состояние: (url на странице) https://stackoverflow.com/questions/ask?locale=it - I18n.locale = "это"
- Нажмите на флаг RU
- Обновленное состояние: (url на странице) https://stackoverflow.com/questions/ask?locale= это - I18n.local = "ru"
Одинаковые запросы между prd и dev равны (заголовки и т.д. и т.п.)
Честно говоря, я не знаю, где искать решение...
Спасибо
amministratore_items_url
). Вы никогда не знаете, когда не говорящий по-итальянски должен будет внести свой вклад или поддерживать ваш код :) - person Kostas Rousis   schedule 21.05.2014