无法在轨道中选择带重音的列

时间:2012-08-07 06:11:35

标签: ruby-on-rails ruby activerecord

我在我的rails应用程序中有Level记录,它包含1个字段(名称),可以包含带重音的字符。

1.9.3p125 :008 > Level.all
 Level Load (0.4ms)  SELECT "levels".* FROM "levels" 
 => [#<Level id: 1, name: "Débutant">, #<Level id: 2, name: "Intermédiaire">, #<Level id: 3, name: "Avancé">]  

但是当我查询时,我有:

1.9.3p125 :011 > Level.where("name = ?", "D\U+FFC3\U+FFA9butant").first
 Level Load (0.3ms)  SELECT "levels".* FROM "levels" WHERE (name = 'Dbutant') LIMIT 1
 => nil 

我在使用Level.where("name = ?", "Débutant").first时无法输入rails c,因为é\U+FFC3\U+FFA9直接替换。但是在我的控制器中,结果是一样的,我无法查询突出的字符串。

我目前使用sqlite进行测试。

2 个答案:

答案 0 :(得分:1)

您在控制台中的问题与readline库有关:您必须使用正确的readline支持安装Ruby。

如果您使用rvm安装了Ruby,解决此问题的最快方法是:

rvm pkg install readline

然后(假设您使用的是1.9.3,否则只需替换您的Ruby版本):

rvm reinstall 1.9.3 --with-readline-dir=$rvm_path/usr

之后,在Rails控制台中输入é应该再次工作......

关于您的其他问题(在控制器中):您能否发布包含正在进行的SQL查询的日志摘录?

答案 1 :(得分:0)

放置此字符串

#encoding: utf-8

到你的Ruby文件的第一行。