Rai*_*ner 1 ruby ruby-on-rails ruby-on-rails-3
我想在保存或更新之前在我的列上创建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])
!@photographer.save
flash[:notice] = " "
render_action 'edit'
end
Run Code Online (Sandbox Code Playgroud)
我做错了什么,为什么文字和名字不是"gsubbed"?
更新: 我的帮手:
def convert_html_entities(text)
text.gsub(/å/,"å")
text.gsub(/æ/,"æ")
text.gsub(/ø/,"ø")
text.gsub(/©/,"©")
text = text.gsub(/["]/, '"')
end
Run Code Online (Sandbox Code Playgroud)
你应该在模型级别执行此操作(如果你想保持DRY,可以将你的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
Run Code Online (Sandbox Code Playgroud)
在您的控制器中,您只需要:
def update
@photographer = Photographer.find(params[:id])
@photographer.update_attributes(params[:photographer])
flash[:notice] = " " #weird message BTW
render :edit
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1830 次 |
| 最近记录: |