视频: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;的更多相关文章

  1. js去掉输入框的前后空格及一些常用正则表达式

    去掉TextBox输入框两头的前后空格:onblur="this.value=this.value.replace(/^\s+|\s+$/g,'');" str为要去除空格的字符串 ...

  2. .Net用js实现aspx页面删除TextBox输入框的前后空格

    去掉TextBox输入框两头的前后空格:onblur="this.value=this.value.replace(/^\s+|\s+$/g,'');" str为要去除空格的字符串 ...

  3. 正则去掉html标签之间的空格、换行符、tab符,但是保留html标签内部的属性空格

    今天遇到一个比较少见的去空格: 正则去掉html标签之间的空格.换行符.tab符,但是保留html标签内部的属性空格 JS 举例: "<a href='baidu.com' name= ...

  4. js去掉字符串中的所有空格

    1.使用js去掉字符串中的所有空格 1.1.定义一个去空格函数方法 function Trim(str,is_global){ var result; result = str.replace(/(^ ...

  5. bat 获取系统日期,时间,并去掉时间小时前面的空格和时间后面的空格

    @echo off rem BAT获取系统日期,时间,并去掉时间小时前面的空格和时间后面的空格 echo *** %DATE% echo *** %TIME% set THISDATE=%DATE:~ ...

  6. 去掉无用的多余的空格(string1.前后空格,2.中间空格)

    1.使用NSString中的stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]方法只是去掉左右两边的空格: ...

  7. 去掉MySQL字段中的空格

    mysql replace 函数   语法:replace(object,search,replace)   意思:把object中出现search的全部替换为replace   案例: SQL Co ...

  8. 去掉li列表前面的空格

    如果用li做列表的话,li前面的空格其实是li的默认样式.因为li位于ul里面,所以,有空格代表了ul肯定有padding值. ul { margin: 0px; padding: 0px; }

  9. 去掉文本框前后的空格(JS+JQuery)

    表单验证时,需要去除文本框前后的空格才可以正确通过验证.以前看到过一句话:任何设计和代码都要对用户足够宽容. <input type="text" class="p ...

随机推荐

  1. [转]mac上安装android sdk

    一.先下载android sdk for mac 给二个靠谱的网址: a). http://down.tech.sina.com.cn/page/45703.html b). http://mac.s ...

  2. iOS 建立项目过滤机制 —— 给工程添加忽略文件.gitignore

        目前iOS 项目 主要忽略 临时文件.配置文件.或者生成文件等,在不同开发端这些文件会大有不同,如果 git add .把这些文件都push到远程, 就会造成不同开发端频繁改动和提交的问题. ...

  3. Linux基础命令---comm

    comm 逐行比较两个已经排序过的文件.结果以3列显示:第1列显示只在file1出现的内容,第2列显示只在file2出现的内容,第3列显示同时出现的内容. 此命令的适用范围:RedHat.RHEL.U ...

  4. 文本框获取光标位置 ---- ctrl+enter换行

    业务需求:按下enter键发送信息,按下ctrl+enter键换行 下面代码是网上找的资料 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 T ...

  5. MySQL Crash Course #09# Chapter 17. Combining Queries: UNION

    INDEX UNION Rules WHERE VS. UNION UNION VS. UNION ALL Sorting Combined Query Results UNION Rules As ...

  6. $.post 和 $.get 设置同步和异步请求

    由于$.post() 和 $.get() 默认是 异步请求,如果需要同步请求,则可以进行如下使用:在$.post()前把ajax设置为同步:$.ajaxSettings.async = false;在 ...

  7. yum配合rpm查看软件包安装位置

    今天安装apache,新版本要求除了apache的安装包以外,还要求先安装apr.apr-util和pcre. 开始并没有急着去下载apr的安装包,而是想看看我的操作系统中有没有安装过了这个软件,结果 ...

  8. 剑指Offer——跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 思路分析 这个问题可以先从简单开始考虑,台阶只有1阶,只有1种跳法,台阶有2阶,有2种跳法:一种两 ...

  9. Python3基础 file for+list 读取txt文本 并 一行一行的输出(低效率)

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  10. luogu 1004 方格取数

    题目描述 设有 $N \times N$ 的方格图 $(N \le 9)$ ,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 $0$ .如下图所示(见样例): A 0 0 0 0 0 0 ...