我正在尝试这样做,以便在提交表单时,我会在模型级别上进行一些gsub验证,然后再将其保存到数据库中。
这是我的型号代码:
class Blast < ActiveRecord::Base
before_save :inliner
def inliner
self.body.gsub!('class=\"wysiwyg-color-grey\"' => 'style="color: #A9A9A9;"',
'class=\"wysiwyg-color-blue\"' => 'style="color: #333399;"',
'class=\"wysiwyg-color-purple\"' => 'style="color: #663399;"',
'class=\"wysiwyg-color-red\"' => 'style="color: #CC3333;"',
'class=\"wysiwyg-color-orange\"' => 'style="color: #FF6633;"',
'class=\"wysiwyg-color-yellow\"' => 'style="color: #FFCC33;"',
'class=\"wysiwyg-color-green\"' => 'style="color: #009933;"')
end
end
这是我的控制器代码:
def emailblastcreate
email = Blast.create(blast_params)
user = current_user
PanelMailer.blast(user, email).deliver
end
似乎无法绕过它,任何见解都会很棒。
答案 0 :(得分:0)
<强>更新强>
我认为您没有正确使用gsub
。这是重写方法的一种方法。
before_save :inliner
def inliner
regex_hash = {
Regexp.new(%Q(class="wysiwyg-color-grey")) => 'style="color: #A9A9A9;"',
Regexp.new(%Q(class="wysiwyg-color-blue")) => 'style="color: #333399;"',
Regexp.new(%Q(class="wysiwyg-color-purple")) => 'style="color: #663399;"',
Regexp.new(%Q(class="wysiwyg-color-red")) => 'style="color: #CC3333;"',
Regexp.new(%Q(class="wysiwyg-color-orange")) => 'style="color: #FF6633;"',
Regexp.new(%Q(class="wysiwyg-color-yellow")) => 'style="color: #FFCC33;"',
Regexp.new(%Q(class="wysiwyg-color-green")) => 'style="color: #009933;"'
}
regex_hash.each do |regex_exp, val|
self.body.gsub!(regex_exp, val)
end
end
您还可以参考以下内容进一步改进语法: