2010-12-07 88 views
4

Rails的是在網頁上顯示的驗證消息這樣:1錯誤此{{模型}}被保存

1 error prohibited this {{model}} from being saved 
There were problems with the following fields: 
{{attribute}} {{message}} 

婉婷它顯示型號名稱不是這些這些括號。 我該如何解決它,它爲什麼這樣做?

+0

什麼版本的Rails?什麼版本的Ruby?什麼OS?你的代碼是什麼樣的?你的日誌還有什麼?你的Gemfile是什麼樣的?等等 – jdl 2010-12-07 04:08:50

回答

10

這是一個國際化的軌道問題。已經對一些工作的一個解決方案是國際寶石從降級到0.5.0 0.4.2,像這樣:

sudo gem uninstall i18n 
sudo gem install i18n -v 0.4.2 

當然,如果你使用RVM來管理你的寶石,你不在上面的命令中需要sudo

+0

任何人都有一個鏈接到錯誤報告,這是產生這個錯誤?只是想留意何時可以解決這個問題。乾杯 – Evolve 2011-01-03 06:22:15

+0

本身並不是一個bug :-(這是因爲Rails開發中常見的「破解以前的API」的思路,Rails 3試圖轉向Ruby 1.9,而Ruby 1.9包含一個用於字符串替換的「%{}」語法,所以i18n機制也轉移到了這個領域,在i18n gem中,0.5.0之前的版本都支持這兩個版本,在0.5.0之後,只支持新的格式,不幸的是,這意味着你可能意外地破壞了Rails 2.3。 5通過安裝Rails 3進行安裝,因爲它能夠使用i18n 0.5.0。 – 2011-01-27 10:30:06

1

,如果你想離開安裝了這兩個寶石,另一個解決方案是在使用Rails 2.3.5創建配置/ preinitializers.rb並添加行

gem 'i18n', '0.4.2' 
0

,即使含

配置/ preinitializers.rb

gem 'i18n', '0.4.2

和含有的environment.rb

config.gem "i18n", :version => '0.4.2'

我不得不卸載i18n gem的0.5.0版本來完成這項工作。

2

適當的解決方案包括使用bundler來管理你的寶石,而不是使用系統默認值和舊的Rails 2.x方法將其嵌入到environment.rb中。 Bundler將您的應用程序的寶石從您的系統寶石中分離出來,並消除了在使用i18n版本0.4.2和0.5以及Rails 2.x和3.x時出現的問題。

步驟:

  1. 安裝程序捆綁了你的Rails 2.3的應用程序
  2. 在你的Gemfile,只是完全離開了i18t。
  3. 運行「捆綁」

注意:如果你確實需要國際化,只需指定在Gemfile中正確的版本。 Bundler將您的應用程序的寶石從您的系統寶石中分離出來,因此絕不會在系統上安裝0.4.2和0.5這些奇怪的行爲。