Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 1错误禁止保存此{{model}}_Ruby On Rails_Validation - Fatal编程技术网

Ruby on rails 1错误禁止保存此{{model}}

Ruby on rails 1错误禁止保存此{{model}},ruby-on-rails,validation,Ruby On Rails,Validation,Rails在页面上显示验证消息,如下所示: 1 error prohibited this {{model}} from being saved There were problems with the following fields: {{attribute}} {{message}} 希望它显示模型名称,而不是这些括号。 我如何修复它以及为什么要这样做?这是rails国际化的一个问题。一个对某些人有效的解决方案是将国际化创业板从0.5.0降级到0.4.2,如下所示: sudo gem u

Rails在页面上显示验证消息,如下所示:

1 error prohibited this {{model}} from being saved
There were problems with the following fields:
{{attribute}} {{message}}
希望它显示模型名称,而不是这些括号。
我如何修复它以及为什么要这样做?

这是rails国际化的一个问题。一个对某些人有效的解决方案是将国际化创业板从0.5.0降级到0.4.2,如下所示:

sudo gem uninstall i18n
sudo gem install i18n -v 0.4.2

当然,如果您使用RVM管理gems,则不需要在上面的命令中使用
sudo

如果您想同时安装这两个gems,另一个解决方案是创建config/preinitializers.rb并添加行

gem 'i18n', '0.4.2'

使用Rails 2.3.5时,即使config/preinitializers.rb包含

gem'i18n',0.4.2

和environment.rb

config.gem“i18n”,版本=>0.4.2'


我必须卸载i18n gem的0.5.0版才能实现这一点。

正确的解决方案是使用bundler来管理gem,而不是使用系统默认值和将其嵌入environment.rb的旧Rails 2.x方法。Bundler将应用程序gems与系统gems正确隔离,并消除了在使用i18n版本0.4.2和0.5以及Rails 2.x和3.x时出现的问题

步骤:

  • 为您的Rails 2.3应用程序设置捆绑程序
  • 在您的GEM文件中,只需完全省略i18t即可
  • 运行“bundle”

  • 注意:如果您确实需要i18n,只需在文件中指定正确的版本即可。Bundler将应用程序的gems与系统gems正确隔离,这样就不会出现在系统上同时安装0.4.2和0.5的奇怪行为。

    什么版本的Rails?什么版本的Ruby?什么操作系统?你的代码看起来像什么?你的日志里还有什么?你的文件看起来像什么?是否有人有导致此错误的错误报告的链接?我只是想看看什么时候能修好。Cheeset本身并不是一个bug:-(-这是因为Rails开发中通常的“打破以前的API”心态。Rails 3尝试迁移到Ruby 1.9,Ruby 1.9包含一个“%{}”字符串替换的语法,因此i18n机制也转移到了这一点。在i18n gem中,0.5.0之前的版本同时支持。At和0.5.0之后,只支持新格式。不幸的是,这意味着您可能会通过安装Rails 3意外中断Rails 2.3.5安装,因为它引入了i18n 0.5.0。更进一步,请参见上文-At大约在Rails 2.3.8左右,Rails本身就开始使用新的插值语法,因此它可以与新的i18n gem配合使用。但是,当然,大多数人不会在Rails 2.3.5之后运行任何东西,因为他们都会因为依赖坏的机架版本(以及其他问题)而出现严重故障请参阅Ruby on Rails博客和用户评论,如2.3.9发布公告以获得更多细节。直到Rails 2.3。X再次正常工作,这都是一个可怕的消息。唯一要考虑的是,如果使用智能产卵的乘客(您的应用程序共享一个Rails实例)预初始值设定项被忽略,因此您必须将activesupport 2.3.5 activesupport-2.3.5/lib/activesupport/vendor.rb中的一行从:gem'i18n','>=0.1.3'更改为:gem'i18n','>=0.1.3','<0.5.0'您所做的只是告诉active support从0.5.0系列开始兼容性中断