【问题标题】:Can`t remove a new line无法删除新行
【发布时间】:2011-08-23 19:04:06
【问题描述】:

我有一个模型,它有一个唯一的令牌,每次保存模型时都要更改。

我正在使用 before_filter 更改令牌,它正在工作,问题是:

class Confirmation < ActiveRecord::Base
  attr_accessible :item_id, :item_type

  before_save :define_token

  def to_param
    token
  end

  private
    def define_token
      str = ActiveSupport::SecureRandom.base64(32).gsub("/","_").gsub(/=+$/,"")
      self.token = Util.secure_hash("#{str} - #{Time.now.utc.to_s} - #{item_id}")
    end
end

当我查看生成的令牌时,它会给我一个随机字符串,末尾带有 \n。

我已尝试添加此行:

def define_token
  str = ActiveSupport::SecureRandom.base64(32).gsub("/","_").gsub(/=+$/,"")
  str = Util.secure_hash("#{str} - #{Time.now.utc.to_s} - #{item_id}")
  self.token = str.gsub("\n", "n")
end

但还是不行,如何去掉最后的新行?

【问题讨论】:

    标签: ruby-on-rails-3 gsub


    【解决方案1】:

    首先,假设换行符 100% 是虚假的,我会找出它来自哪里,然后将其删除。但是,如果由于某种原因这不是一个选项,则以下 gsub 将起作用:

    self.token = str.gsub(/\n$/, "")
    

    如果换行符是字符串中的最后一个条目,它只会删除换行符。要删除所有换行符,请使用:

    self.token = str.gsub(/\n/, "")
    

    更简单的是,rstrip 方法将从字符串中删除尾随空格:

    self.token = str.rstrip
    

    【讨论】:

    • 谢谢,它神奇地工作,代码没有任何变化。还是谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-01-10
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    相关资源
    最近更新 更多