Rails 4: проблема с изменением локали (только для среды PRD)

У меня проблема, когда я пытаюсь изменить локаль в своем веб-приложении. В режиме разработки (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-адресов) имеют неверный языковой стандарт.

Пример

  1. Текущее состояние: (url на странице) https://stackoverflow.com/questions/ask?locale=it - I18n.locale = "это"
  2. Нажмите на флаг RU
  3. Обновленное состояние: (url на странице) https://stackoverflow.com/questions/ask?locale= это - I18n.local = "ru"

Одинаковые запросы между prd и dev равны (заголовки и т.д. и т.п.)

Честно говоря, я не знаю, где искать решение...

Спасибо


person Luis C.    schedule 21.05.2014    source источник
comment
Вы используете Rails 4? Почитайте про турболинки.   -  person Mike Szyndel    schedule 21.05.2014
comment
Хотя это и не по теме, я настоятельно рекомендую вам использовать в коде только английский язык, особенно при именовании вещей (я имею в виду amministratore_items_url). Вы никогда не знаете, когда не говорящий по-итальянски должен будет внести свой вклад или поддерживать ваш код :)   -  person Kostas Rousis    schedule 21.05.2014
comment
@rkon Спасибо за предложение. На самом деле множественное число итальянских терминов не очень хорошо.   -  person Luis C.    schedule 21.05.2014


Ответы (1)


Я предполагаю, что вы используете Rails 4, так что это проблема Turbolinks. Я не буду вдаваться в подробности (вы можете прочитать о них на странице gem), но решение добавляется data-no-turbolink к вашей кнопке.

Кроме того, я не понимаю, почему вы помещаете кнопку внутри ссылки вместо использования button_to помощника Rails?

person Mike Szyndel    schedule 21.05.2014