我已经集成了一个所见即所得的编辑器,我需要做一些替换以保持内联兼容性。在将params保存到数据库之前,我已将params[:body].gsub()
放在create方法的开头。但是,我得到了undefined method
gsub'为零:NilClass`
最好的方法是做什么?
def emailblastcreate
params[: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;"')
email = Blast.create(blast_params)
user = current_user
PanelMailer.blast(user, email).deliver
end
答案 0 :(得分:0)
好吧,首先,编辑params对我来说似乎很奇怪(同样你的gsub
应该是gsub!
- 爆炸使它具有破坏性,前者需要一个新的变量才有用)。如果是我,在你的Blast
模型中,我会将这项工作交给回调。 [注意:伪代码并没有经过测试,但这个想法就在那里。]
class Blast
before_save :gsub_colours if wysiwig_colours?
private
def gsub_colours
hex_colours.each do |key, value|
return unless body.include?(key)
body.gsub!(key, value)
end
end
def wysiwyg_colours?
body.include?('wysiwyg-color-')
end
def hex_colours
{ '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
希望能带你朝着正确的方向前进。