在保存或更新之前,我试图在我的列上生成gsub。
这是我的控制器:
def dansk(text)
self.text.gsub('å', 'å')
self.text.gsub('Å', 'Å')
self.text.gsub('æ', 'æ')
self.text.gsub('Æ', 'Æ')
self.text.gsub('ø', 'ø')
self.text.gsub('Ø', 'Ø')
end
def update
@photographer = Photographer.find(params[:id])
@photographer.update_attributes(params[:photographer])
@photographer.text = dansk(params[:photographer][:text])
@photographer.text = dansk(params[:photographer][:name])
[email protected]
flash[:notice] = " "
render_action 'edit'
end
我做错了什么,为什么文本和名称没有“g subbed”?
更新:
我的助手:
def convert_html_entities(text)
text.gsub(/å/,"å")
text.gsub(/æ/,"æ")
text.gsub(/ø/,"ø")
text.gsub(/©/,"©")
text = text.gsub(/["]/, '"')
end
最佳答案
您应该在模型级别执行此操作(如果希望保持干爽,可以将dansk方法放在模块中)。
before_save :danskify
def danskify
self.text = dansk(self.text) if text_changed?
self.name = dansk(self.name) if name_changed?
end
def dansk(text)
[['å', 'å'], ['Å', 'Å'], ['æ', 'æ'], ['Æ', 'Æ'], ['ø', 'ø'], ['Ø', 'Ø']].each do |rule|
text = text.gsub(rule[0], rule[1])
end
end
在控制器中,您只需要:
def update
@photographer = Photographer.find(params[:id])
@photographer.update_attributes(params[:photographer])
flash[:notice] = " " #weird message BTW
render :edit
end
关于ruby-on-rails - Rails如何始终在保存前gsub列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7773263/