未定义的方法`default_locale ='为零:NilClass

问题描述:

我试图国际化我的应用程序与设计,但我在一些点挣扎。我已经installe了国际化的宝石,并创建了devise.pt-BR.yml文件,其内部application.rb未定义的方法`default_locale ='为零:NilClass

config.i18n.default_locale = :'pt-BR' 

好写的,但是当我尝试任何事情我的应用程序中,我得到了以下错误消息:

未定义的方法`DEFAULT_LOCALE =”的零:NilClass

Rails.root:/首页/ Ubuntu的/工作区/ aqueleprojetoprivate /医学生 应用程序跟踪|框架跟踪|完整曲线

应用程序/控制器/ application_controller.rb:8: <class:ApplicationController>' app/controllers/application_controller.rb:1:in ' 的ActiveSupport(4.2.4)LIB/active_support/dependencies.rb:457:在load' activesupport (4.2.4) lib/active_support/dependencies.rb:457:in块 在LOAD_FILE' 的ActiveSupport(4.2.4) LIB/active_support/dependencies.rb:647:在new_constants_in' activesupport (4.2.4) lib/active_support/dependencies.rb:456:in LOAD_FILE '的ActiveSupport(4.2.4) LIB/active_support/dependencies.rb:354:在require_or_load' activesupport (4.2.4) lib/active_support/dependencies.rb:494:in load_missing_constant' 的ActiveSupport(4.2.4) LIB/active_support/dependencies.rb :184:const_missing' app/controllers/home_controller.rb:1:in' activesupport(4.2.4)lib/active_support/dependencies.rb:457:in load' activesupport (4.2.4) lib/active_support/dependencies.rb:457:in block in load_file'activesupport(4.2.4) lib/active_support/dependencies.rb:647:in new_constants_in' activesupport (4.2.4) lib/active_support/dependencies.rb:456:in load_file'activesupport(4.2.4) lib/active_support/dependencies.rb:354:in require_or_load' activesupport (4.2.4) lib/active_support/dependencies.rb:494:in load_missing_constant'activesupport(4.2.4) ) LIB/active_support/dependencies.rb:184:在const_missing' activesupport (4.2.4) lib/active_support/inflector/methods.rb:261:in const_get '的ActiveSupport(4.2.4) LIB/active_support /偏转器/ methods.rb:261:在block in constantize' activesupport (4.2.4) lib/active_support/inflector/methods.rb:259:in 每个' 的ActiveSupport(4.2.4) LIB/active_support/inflector/methods.rb:259:inject' activesupport (4.2.4) lib/active_support/inflector/methods.rb:259:in constantize' activesupport(4.2.4)lib/active_support/dependencies.rb:566:in get' activesupport (4.2.4) lib/active_support/dependencies.rb:597:in constantize'actionpack(4.2.4) lib/action_dispatch/routing/route_set.rb: 72:在controller_reference' actionpack (4.2.4) lib/action_dispatch/routing/route_set.rb:62:in controller'actionpack( 4.2.4) lib/action_dispatch/routing/route_set.rb:41:在serve' actionpack (4.2.4) lib/action_dispatch/journey/router.rb:43:in块中发送' actionpack(4.2.4)lib/action_dispatch/journey/router.rb:30:在each' actionpack (4.2.4) lib/action_dispatch/journey/router.rb:30:in服务' actionpack(4.2 .4)lib/action_dispatch/routing/route_set.rb:821:在 call' warden (1.2.4) lib/warden/manager.rb:35:in块中调用' warden(1.2.4)lib/warden/manager.rb:34:在catch' warden (1.2.4) lib/warden/manager.rb:34:in中调用'rack(1.6.4)lib /rack/etag.rb:24:in call' rack (1.6.4) lib/rack/conditionalget.rb:25:in调用'rack (1.6.4)lib/rack/head.rb:13:在call' actionpack (4.2.4) lib/action_dispatch/middleware/params_parser.rb:27:in调用' actionpack(4.2.4)lib/action_dispatch/middleware/flash。 rb:260:在 call' rack (1.6.4) lib/rack/session/abstract/id.rb:225:in上下文' rack(1.6.4)lib/rack/session/abstract/id.rb:220:in call' actionpack (4.2.4) lib/action_dispatch/middleware/cookies.rb:560:in呼叫' 了activerecord(4.2.4)LIB/active_record/query_cache.rb:36:在call' activerecord (4.2.4) lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in 呼叫的ActiveRecord(4.2.4)LIB/active_record/migration.rb:377:在呼叫” 的ActiveSupport call' actionpack (4.2.4) lib/action_dispatch/middleware/callbacks.rb:29:in块( 4.2.4)LIB/active_support/callbacks.rb:88:在 __run_callbacks__' activesupport (4.2.4) lib/active_support/callbacks.rb:778:in _run_call_callbacks' 的ActiveSupport(4.2.4)LIB/active_support/callbacks.rb:81:在 run_callbacks' actionpack (4.2.4) lib/action_dispatch/middleware/callbacks.rb:27:in呼叫” ActionPack的 (4.2.4)LIB/action_dispatch/middleware/reloader.rb:73:在call' actionpack (4.2.4) lib/action_dispatch/middleware/remote_ip.rb:78:in 中调用'actionpack(4.2。4) LIB/action_dispatch /中间件/ debug_exceptions.rb:17:在call' web-console (2.2.1) lib/web_console/middleware.rb:31:in呼叫 ' ActionPack的(4.2.4) LIB/action_dispatch /中间件/ show_exceptions.rb:30:在call' railties (4.2.4) lib/rails/rack/logger.rb:38:in call_app' railties (4.2.4) lib/rails/rack/logger.rb:20:在block in call' activesupport (4.2.4) lib/active_support/tagged_logging.rb:68:in块中标记' activesupport(4.2.4)lib/active_support/tagged_logging.rb:26:在 tagged' activesupport (4.2.4) lib/active_support/tagged_logging.rb:68:in标签'railties(4.2.4) lib/rails /rack/logger.rb:20:in call' actionpack (4.2.4) lib/action_dispatch/middleware/request_id.rb:21:in调用'rack(1.6.4) lib/rack/methodoverride.rb:22:在call' rack (1.6.4) lib/rack/runtime.rb:18:in调用'activesupport(4.2.4) lib/active_support/cache/strategy/local_cache_middleware .rb:28:在 call' rack (1.6.4) lib/rack/lock.rb:17:in调用'actionpack(4.2.4) lib/action_dispatch/middleware/static.rb:116:在call' rack (1.6.4) lib/rack/sendfile.rb:113:in调用'railties(4.2.4) lib/rails/engine.rb:518:在call' railties (4.2.4) lib/rails/application.rb:165:in调用'rack(1.6 .4) lib/rack/lock.rb:17:在call' rack (1.6.4) lib/rack/content_length.rb:15:in调用'rack(1.6.4) lib/rack/handler/webrick.rb:88:in service' /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:138:in service' /usr/local/rvm/rubies /ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:94:in在start_thread”

run' /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/server.rb:294:in 块如何解决呢?

它看起来像你的Rails是4.2版本。

如果是这样的话,你不应该使用config.i18n而是I18n
here

# in config/initializers/locale.rb 

# tell the I18n library where to find your translations 
I18n.load_path += Dir[Rails.root.join('lib', 'locale', '*.{rb,yml}')] 

# set default locale to something other than :en 
I18n.default_locale = :pt 
+0

正确。谢谢。我是新来的铁轨,我想知道什么是最常用的铁轨版本? –

+0

我确定有很多Rails 3应用程序,但我建议使用最新的稳定版本(如您所做的那样)。现在升级是非常无痛的。 –

+0

你给的例子是当你使用一个不同的文件,然后application.rb。在这种情况下,您使用语言环境初始值设定项,但是如果您使用application.rb,那么config.i18n.load_path应该可以工作。这也在文档中描述。 –