0

我的 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 cas时无法输入,é直接替换为\U+FFC3\U+FFA9. 但在我的控制器中,结果是一样的,我无法查询重音字符串。

我目前使用 sqlite 进行测试。

4

2 回答 2

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 查询的日志摘录?

于 2012-08-07T09:17:44.883 回答
0

放置这个字符串

#encoding: utf-8

到 Ruby 文件的第一行。

于 2012-08-07T07:38:47.190 回答