获取I18n :: InvalidLocale(:en不是有效的语言环境):on rails ajax request

时间:2015-08-05 13:17:13

标签: jquery ruby-on-rails ajax

当我正常加载页面时它没有显示任何语言环境错误但是当我执行ajax请求时我得到了

I18n::InvalidLocale (:en is not a valid locale):
  i18n (0.7.0) lib/i18n.rb:284:in `enforce_available_locales!'
  i18n (0.7.0) lib/i18n.rb:151:in `translate'
  i18n (0.7.0) lib/i18n.rb:168:in `translate!'

// ajax request

$.ajax({
  url: "/unlock_company",
  type: "GET",
  dataType: 'json',
  success: function(data) {
    console.log(data);
  }
});

在控制器中

def unlock_company
 respond_to do |format|
  format.json {render json: { :result => '@result'}}
 end
end

在application.rb文件中

config.i18n.enforce_available_locales = true
I18n.config.enforce_available_locales = true
config.i18n.available_locales = [:"en-US"]

3 个答案:

答案 0 :(得分:1)

尝试使用String代替长区域设置名称:

config.i18n.available_locales = ["en-US"]

答案 1 :(得分:1)

我不确定这是否是一个解决方案,但值得研究。简单的测试。你没有提到你正在使用的Rails版本,但是从Rails 4-ish开始,这些版本已被弃用:

config.i18n.enforce_available_locales = true
I18n.config.enforce_available_locales = true

过去I18n有一个错误导致你看到同样的错误。使用.enforce_available_locales触发了错误/错误。更多here

由于.enforce_available_locales默认为true,因此您应该将其从application.rb中删除,作为副作用,它可以消除错误。

答案 2 :(得分:1)

我遇到同样的问题,我将这些行添加到我的application.rb文件中,它解决了问题:

config.i18n.fallbacks = true
config.i18n.enforce_available_locales = false