Ruby on rails 在表单文本区域上使用gsub
我集成了一个wysiwyg编辑器,为了保持内联兼容性,我需要做一些替换。在将参数保存到数据库之前,我已将Ruby on rails 在表单文本区域上使用gsub,ruby-on-rails,Ruby On Rails,我集成了一个wysiwyg编辑器,为了保持内联兼容性,我需要做一些替换。在将参数保存到数据库之前,我已将params[:body].gsub()放置在create方法的开头。然而,我得到了nil:NilClass的未定义方法gsub'` 做这件事最好的方法是什么 def emailblastcreate params[:body].gsub('class="wysiwyg-color-grey"' => 'style="color: #A9A9A9;"',
params[:body].gsub()放置在create方法的开头。然而,我得到了nil:NilClass的未定义方法
gsub'`
做这件事最好的方法是什么
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
好的,首先,以这种方式编辑参数对我来说似乎很奇怪(而且你的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
希望这会指引您正确的方向。需要更多信息来帮助您,但是对于nil:NilClass
来说,意味着您的参数[:body]
是空的。gsub
应该放在模型中,而不是控制器中,但一次只能放一件东西。@CD-RUM奇怪的是,它不是空的,如果我是诚实的,我就无法理解它。你的日志输出有参数
?@CD-RUM“body”=>“test”}因此,无论您试图保存的对象是什么,都不会保存,并且您的应用程序会调用gsub
。在你的问题中发布更多日志。它可能会说ROLLBACK
或类似的话。