Rails 4:更改区域设置问题(仅限PRD环境)

时间:2014-05-21 08:26:21

标签: ruby-on-rails nginx unicorn rails-i18n

当我尝试更改webapp上的区域设置时出现问题。在开发模式(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

问题是这样的:当我点击标志时(在开发时一切正常),页面没有被重新加载但是区域设置被更改(用<%=debug(params)%>检查。这意味着页面内的其他网址(使用default_url_option将当前语言环境设置为所有URL)没有正确的语言环境。

实施例

  1. 当前状态:(页面中的网址) https://stackoverflow.com/questions/ask?locale=it - I18n.locale = “它”
  2. 点击标志EN
  3. 更新状态:(页面中的网址) https://stackoverflow.com/questions/ask?locale= - I18n.local = “EN”
  4. prd和dev之间的相同请求是equals(header等等)

    老实说,我不知道在哪里寻找解决方案......

    由于

1 个答案:

答案 0 :(得分:0)

我猜您正在使用Rails 4,因此这是Turbolinks问题。我不打算详细介绍(您可以阅读on the gem page),但解决方法是在按钮中添加data-no-turbolink属性。

另外,我不明白为什么你把按钮放在链接里而不是使用button_to Rails助手?