在保存或更新之前,我试图在我的列上生成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/

10-11 05:15