Rails应用程序出现错误 "无法从{ru.yml路径}加载翻译,期望它返回哈希值,但它没有"。

9

我的应用程序在本地能够正常运行,但是在部署到生产服务器后,当我运行rails server并请求页面时,出现以下错误:

ActionView::Template::Error (can not load translations from {app}/config/locales/ru.yml, expected it to return a hash, but does not).

我有一个 YAML 翻译 ru.yml:

ru:
  clients:
    index: 
      title: Список клиентов

当调用时发生错误,例如:

%h1=t '.title'

我的开发机运行的是Mac OS X ML操作系统

生产服务器是安装了rvm和libyaml的CentOS 6

两台服务器都使用Ruby 1.9.2p320和Rails 3.2.8版本


3
在Rails控制台中手动读取config/locales/ru.yml文件时,YAML.load(File.open('config/locales/ru.yml'))会将该文件加载为YAML格式,并将其转换为Ruby对象。 - KARASZI István
它在以下字符串上给我错误: default: %d.%m.%Y %H:%M - lich
1
这一行出了问题。我添加了引号:default: '%d.%m.%Y %H:%M',然后得到了一个哈希值。问题解决了,谢谢! - lich
好的,那么它可以关闭了。 :) - KARASZI István
@lich请发布您自己的答案(见下文),以便关闭此问题,然后它就不会再出现。谢谢! - Roger
2个回答

5

YAML.load(File.open('config/locales/ru.yml')) 操作在某一行出错。

我添加了引号:default: '%d.%m.%Y %H:%M',得到了哈希值。问题得到解决。


1
问题是关于使用无法解析带有%符号字符串并生成SyntaxError异常的psych YAML引擎。
请改用syck引擎。将以下代码添加到您的config/boot.rb文件末尾。
YAML::ENGINE.yamler = 'syck'

提示:Syck 要求 Ruby 版本 >= 2.0.0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接