gem 'acts_as_taggable_on'
gem 'activeadmin'
...
ActiveAdmin.register Article do
...
form do |f|
f.inputs do
f.input :tag_list
end
end
end
我正在尝试输入标签词“статья”,但作为回报:
Encoding::UndefinedConversionError in Admin::ArticlesController#create
"\xD1" from ASCII-8BIT to UTF-8
到处看,但找不到合适的答案。我该怎么做才能消除这个错误?
更新 我注意到,对于title或article_body等其他输入字段,可以传递西里尔符号。所以我猜它与acts_as_taggable gem有关。
答案 0 :(得分:0)
因此,act_as_taggable gem确实存在问题。 在我通过internets和rails console的研究中,我发现问题是在保存到数据库期间。转换失败,因为它将一些未知编码转换为二进制格式,而sqlite3无法将其保存到字符串列。所以我按如下方式编辑了gem文件
~/.rvm/gems/ruby-2.1.2/gems/acts_as_taggable_on-3.0.0.rc2/lib/acts_as_taggable_on/tag.rb
...
def as_8bit_ascii(string)
if defined?(Encoding)
string.to_s.force_encoding('UTF-8') #It was BINARY previously
else
string.to_s.mb_chars
end
end
现在它有效!
<强>更新强>
最好不要修改源代码,而是将其应用到您的应用程序中,我想。所以,为了应用所谓的猴子补丁我做了以下。
1)在config / initializers
中创建文件tag.rb2)从gem复制代码并剪切/粘贴它如下(通过实验和google搜索猴子补丁)
ActsAsTaggableOn::Tag.class_eval do
class << self
private
def as_8bit_ascii(string)
if defined?(Encoding)
string.to_s.force_encoding('UTF-8') #It was BINARY previously
else
string.to_s.mb_chars
end
end
end
end