Ruby 删除字段前后空白的Rails
我有一个Rails 3.2.14应用程序,通过一个典型的表单收集数据值。有时工作人员会输入一个字段,例如名称“Doe,John”,其中的格式应为“Doe,John”。或者在其他情况下,他们可能会在表格中添加地址,例如“德克萨斯州休斯顿西八街111号,邮编77448”,而不是“德克萨斯州休斯顿西八街111号,邮编77448” 所以基本上他们做了大量的剪切和粘贴,有时包括前导和尾随空格 我对strip有点熟悉,但我不确定现在我能不能只去掉前导和尾随的空格 我想在保存或创建筛选器之前将其作为验证或回调 如果有人对如何去除前导/尾随空格以及验证或方法的外观有任何建议,我将不胜感激。请查看 您可以很容易地使用它,如下所示Ruby 删除字段前后空白的Rails,ruby,regex,ruby-on-rails-3,strip,Ruby,Regex,Ruby On Rails 3,Strip,我有一个Rails 3.2.14应用程序,通过一个典型的表单收集数据值。有时工作人员会输入一个字段,例如名称“Doe,John”,其中的格式应为“Doe,John”。或者在其他情况下,他们可能会在表格中添加地址,例如“德克萨斯州休斯顿西八街111号,邮编77448”,而不是“德克萨斯州休斯顿西八街111号,邮编77448” 所以基本上他们做了大量的剪切和粘贴,有时包括前导和尾随空格 我对strip有点熟悉,但我不确定现在我能不能只去掉前导和尾随的空格 我想在保存或创建筛选器之前将其作为验证或回调
class User < ActiveRecord::Base
normalize_attribute :first_name, :with => :strip
end
class用户:strip
结束
此外,还有一些其他选项可用,如布尔值、电话号码或手机号码
可以将多个属性的规格化器用作
class User < ActiveRecord::Base
normalize_attribute :first_name, :last_name, :email, :with => :strip
end
class用户:strip
结束
这有非常干净的语法可供使用
编辑:
属性规格化器还提供了更多选项
- :squish=>与相同
- :phone=>删除非数字
您还可以在应用程序中定义规范化器,您可以使用
strip
。正如文件所说:
strip → new_str
Returns a copy of str with leading and trailing whitespace removed.
" hello ".strip #=> "hello"
"\tgoodbye\r\n".strip #=> "goodbye"
所以,strip
应该对你有所帮助
但是,如果您想使用正则表达式来实现这一点。您可以使用:
^\s*|\s*$
因此,您的代码可以是:
str.gsub!(/^\s*|\s*$/, '')
这就是您所寻找的无麻烦、安全的引导和训练空白条带化
基本用法
gem文件中
:
gem 'strip_attributes', '1.8.0' # Strips leading and trailing whitespaces in form input.
class YourModel < ActiveRecord::Base
strip_attributes
end
classyourmodel
ProTip:如果您有其他模型继承自的基类,请将其放入其中但是,默认情况非常好,而且非常安全。我发现这比要求您指定要剥离哪些属性的备选方案要好。一般来说,您希望剥离所有属性。以下是我在保存之前尝试使用
的要点。
@cz3ch使用这个简单的方法回答。我刚刚安装并设置了属性规范化器,并使用示例挤压字段。但是,如果一个字段中有两个连续的空格,如德克萨斯州休斯顿第8街111号77448,则不会像squish那样删除多余的空格。你知道为什么吗?@cz3ch要挤压你可以简单地使用规范化属性:facility\u name,:facility\u address,:facility\u phone,:with=>:squish
@Allerin我已经设置好了,它确实删除了前导/尾随空格。但是,如果字符之间有额外的空格,则不会挤压/删除该空格。有没有想过为什么?谢谢你的帮助!这也会起作用,所以我会创建一个自定义方法并对其调用validate?@cz3ch由您决定如何实现它。我想给你看其他的选择谢谢你的建议,我很感激。我可以看出,这对于我心目中的一些自定义验证非常有用。