【问题标题】:Rails - Remove special characters from phone input on form submission before saving to dbRails - 在保存到数据库之前从表单提交的电话输入中删除特殊字符
【发布时间】:2015-11-17 03:36:53
【问题描述】:

在将表单写入数据库之前提交表单时,如何更改特定字段的输入?在保存到数据库之前,我希望能够采用用户提交的任何电话号码格式并从中删除所有特殊字符和空格。然后我将在我的视图中使用 number_to_phone 方法来格式化我想要的号码。

【问题讨论】:

  • 你应该通过覆盖 setter 来做到这一点
  • 是的,这就是我忘记的。谢谢@apneadiving
  • @WandMaker 在所有地方都使用回调不是一个好习惯。自定义设置器是去那里的方式

标签: ruby-on-rails ruby forms form-for


【解决方案1】:

覆盖设置器并使用正则表达式,因此如果您的模型是用户并且字段是电话号码

class User < ActiveRecord::Base
  def phone_number=(value)
    super(value.blank? ? nil : value.gsub(/[^\w\s]/, '')) 
  end
end

【讨论】:

  • 继续处理nil 案件:)
  • @apneadiving true,不确定他想用 nil 做什么,但我将其更新为至少可以处理 nil
【解决方案2】:

您可以在 ruby​​ 中使用 gsub 方法从包含电话号码的字符串中删除所有空格、连字符和其他字符。 如需进一步阅读和使用,请参阅 [APIdock]http://apidock.com/ruby/String/gsub) 中的条目。

【讨论】:

  • 这不是我感到困惑的部分,我想没有理由包括删除所有特殊字符的部分。我真正的问题是,如何在表单提交写入数据库之前对其进行更改。我认为 apneadiving 给了我正在寻找的答案。覆盖setter方法
  • 您也可以使用 JavaScript 在客户端修改表单提交的数据。
猜你喜欢
  • 2015-09-01
  • 2018-05-08
  • 1970-01-01
  • 2014-05-15
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 2013-05-01
相关资源
最近更新 更多