(GoRails) 如何去掉form输入框头尾的空格;何时用callbacks,gem;
视频:https://gorails.com/episodes/when-callbacks-and-adding-dependencies-are-good?autoplay=1
主题:应当在什么时候使用callbacks, 应当什么时候使用小的功能gem?
根据需要灵活把握
如何去掉Form输入框中,在header或trailing不小心输入的空格?
1. 使用String#strip。可以去掉首尾的whitespace。
2. 如果是User类中的email, name等fields。可以在User类中使用:
validates :email, presence: true
def email=(value)
super(value.strip)
end
super关键字: 调用当前方法在父类中的方法。
使用email=方法,分配的value被stripped,然后返回了原始的email=方法。
不要用javascript实现去掉空格的功能,因为javascript可以被关掉。
s
需要注意,自定义的回调的适用范围
反例:
在Model层,User类,自定义一个callback方法:after_create :send_welcome_email
这导致业务逻辑进入了model 回调。当业务逻辑发生变化,这个代码就不适用了。
正例:
在Model层,User类,自定义一个callback方法:before_validation :strip_whitespace
def strip_whitespace
self.email = email.to_s.strip
self.username = username.to_s.strip
end
所有需要去掉空格的fields都可以放入这个方法中。
⚠️ 核心要点:要和业务逻辑相关。
如果有多个model需要使用strip_whitespanc则可以把这个功能做成一个类,
然后在需要的地方:
include StripWhitespace
strip_whitespace :email, :username
strip whitespace有一个小的gem 可以使用:
https://github.com/rmm5t/strip_attributes/blob/master/lib/strip_attributes.rb
(GoRails) 如何去掉form输入框头尾的空格;何时用callbacks,gem;的更多相关文章
- js去掉输入框的前后空格及一些常用正则表达式
去掉TextBox输入框两头的前后空格:onblur="this.value=this.value.replace(/^\s+|\s+$/g,'');" str为要去除空格的字符串 ...
- .Net用js实现aspx页面删除TextBox输入框的前后空格
去掉TextBox输入框两头的前后空格:onblur="this.value=this.value.replace(/^\s+|\s+$/g,'');" str为要去除空格的字符串 ...
- 正则去掉html标签之间的空格、换行符、tab符,但是保留html标签内部的属性空格
今天遇到一个比较少见的去空格: 正则去掉html标签之间的空格.换行符.tab符,但是保留html标签内部的属性空格 JS 举例: "<a href='baidu.com' name= ...
- js去掉字符串中的所有空格
1.使用js去掉字符串中的所有空格 1.1.定义一个去空格函数方法 function Trim(str,is_global){ var result; result = str.replace(/(^ ...
- bat 获取系统日期,时间,并去掉时间小时前面的空格和时间后面的空格
@echo off rem BAT获取系统日期,时间,并去掉时间小时前面的空格和时间后面的空格 echo *** %DATE% echo *** %TIME% set THISDATE=%DATE:~ ...
- 去掉无用的多余的空格(string1.前后空格,2.中间空格)
1.使用NSString中的stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]方法只是去掉左右两边的空格: ...
- 去掉MySQL字段中的空格
mysql replace 函数 语法:replace(object,search,replace) 意思:把object中出现search的全部替换为replace 案例: SQL Co ...
- 去掉li列表前面的空格
如果用li做列表的话,li前面的空格其实是li的默认样式.因为li位于ul里面,所以,有空格代表了ul肯定有padding值. ul { margin: 0px; padding: 0px; }
- 去掉文本框前后的空格(JS+JQuery)
表单验证时,需要去除文本框前后的空格才可以正确通过验证.以前看到过一句话:任何设计和代码都要对用户足够宽容. <input type="text" class="p ...
随机推荐
- C/C++之面向对象
面向对象的三个基本特征(讲解) 面向对象的三个基本特征是:封装.继承.多态. 封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可 ...
- 使用 jQuery 进行前端验证
前段验证脚本的教程,其基础为jQuery的插件validate. 一.可以验证哪些信息 要求输入不能为空 要求输入格式必须为电子邮箱 要求输入格式必须为URL 要求输入格式必须为日期 要求输入格 ...
- python模块-random随机数模块
导入随机数模块import random 1.random.random() 生成[0,1)之间的随机小数 2.random.randint(a,b) 生成[a,b]之间的随机整数 3.random. ...
- troubleshooting-When importing query results in parallel, you must specify --split-by.
原因分析 -m 4 \ 导数命令中map task number=4,当-m 设置的值大于1时,split-by必须设置字段(需要是 int 类型的字段),如果不是 int类型的字段,则需要加上参数- ...
- 任务调度之Timer与TimerTask配合
什么是任务调度? 在实际业务中,我们经常需要定时.定期.或者多次完成某些任务,对这些任务进行管理,就是任务调度.任务调度与多线程密切相关. 任务调度有多种方式 Timer与TimerTask配合 Ti ...
- HTML5交互性图表库
官网链接:https://www.hcharts.cn/ 出品公司链接:https://jianshukeji.com/ Highcharts Highstock highmaps
- Python3基础 while 斐波那契数列
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- SQL NULL
表 select CHARACTER_MAXIMUM_LENGTH from information_schema.columns where table_name= 'Alliance' selec ...
- HDU 1823 Luck and Love (二维线段树&区间最值)题解
思路: 树套树,先维护x树,再维护y树,多练练应该就能懂了 代码: #include<cstdio> #include<cmath> #include<cstring&g ...
- 'curl' is not recognized as an internal or external command
使用everything搜索本地的curl.exe发现如下 官网查看最新版本https://curl.haxx.se/windows/ 2019-03-06 最新版本7.64.0 curl-7.64. ...