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 TopleyJakob 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”
班级时事通讯