Ruby on rails 想以一种更干净利落的方式在使用rails模型时清理和更改unicode表单字段吗
目前,我正在使用它去除空白。Ruby on rails 想以一种更干净利落的方式在使用rails模型时清理和更改unicode表单字段吗,ruby-on-rails,ruby,forms,unicode,dry,Ruby On Rails,Ruby,Forms,Unicode,Dry,目前,我正在使用它去除空白。 class Newsletter < ActiveRecord::Base before_validation :clean_up_whitespace end def clean_up_whitespace fields_to_strip = ['title','notes'] fields_to_strip.each { |f| unless self.attributes[f].nil? self.attributes[f
class Newsletter < ActiveRecord::Base
before_validation :clean_up_whitespace
end
def clean_up_whitespace
fields_to_strip = ['title','notes']
fields_to_strip.each { |f|
unless self.attributes[f].nil?
self.attributes[f].strip!
end
}
end
class时事通讯
我想做一些类似的事情来摆脱unicode的MS word类型。 目前我使用:
require 'iconv'
class Newsletter < ActiveRecord::Base
before_validation :clean_up_unicode
end
def clean_up_unicode
unless title.blank?
self.title = Iconv.iconv('ascii//ignore//translit', 'utf-8', self.title).to_s
end
unless notes.blank?
self.notes = Iconv.iconv('ascii//ignore//translit', 'utf-8', self.notes).to_s
end
end
require 'iconv'
class Newsletter < ActiveRecord::Base
before_validation :clean_up_unicode
end
def clean_up_unicode
unicode_fields_to_clean = ['title','notes']
unicode_fields_to_clean.each { |u|
unless self.attributes[u].blank?
self.attributes[u] = Iconv.iconv('ascii//ignore//translit', 'utf-8', attributes[u]).to_s
end
}
end
需要“iconv”
班级时事通讯
这个方法很有效,但不是很枯燥,因为我需要对40个表单字段执行它 我原以为我可以使用如下内容:
require 'iconv'
class Newsletter < ActiveRecord::Base
before_validation :clean_up_unicode
end
def clean_up_unicode
unless title.blank?
self.title = Iconv.iconv('ascii//ignore//translit', 'utf-8', self.title).to_s
end
unless notes.blank?
self.notes = Iconv.iconv('ascii//ignore//translit', 'utf-8', self.notes).to_s
end
end
require 'iconv'
class Newsletter < ActiveRecord::Base
before_validation :clean_up_unicode
end
def clean_up_unicode
unicode_fields_to_clean = ['title','notes']
unicode_fields_to_clean.each { |u|
unless self.attributes[u].blank?
self.attributes[u] = Iconv.iconv('ascii//ignore//translit', 'utf-8', attributes[u]).to_s
end
}
end
需要“iconv”
班级时事通讯
我知道我不理解这种工作方式。
当我替换
self.attributes[u]=
与
放置一些变量=
我得到了控制台的正确输出。我只是不知道如何将变量返回到表单中
如果它有帮助,那么错误的代码是self.attributes[u]=我不知道用什么替换它。我本以为我可以使用self.variablenameofield=但rails无法识别这样直接使用的变量。好的,在以下人员的帮助下:
John Topley和Jakob S
(很抱歉,新用户不能只有1个超链接,因此无法链接到其堆栈溢出配置文件)
问一个更简单的问题 我已经能够想出以下有效的代码。
诀窍正在改变
self.attributes[u] = Iconv.iconv('ascii//ignore//translit', 'utf-8', attributes[u]).to_s
到self.send(“#{u}=”,Iconv.Iconv('ascii//ignore//translit','utf-8',attributes[u])发送到 工作代码
需要“iconv”
班级时事通讯