(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 ...
随机推荐
- python+Django框架运用(一)
Django 介绍: django是一个采用Python语言开发的开源框架,2005年发布.早期是做新闻以及内容管理的网站的,提供了非常强大的后管理系统. django官网:https://www.d ...
- quartz-job实现定时任务配置
使用quartz开源调度框架,写服务实现在一些指定场景发送特定短信,创建一个实现org.quartz.Job接口的java类.Job接口包含唯一的方法: public void execute(Job ...
- Python3.x(windows系统)安装matplotlib库
Python3.x(windows系统)安装matplotlib库 cmd命令: pip install matplotlib 执行结果:
- SIFT特征原理简析(HELU版)
SIFT(Scale-Invariant Feature Transform)是一种具有尺度不变性和光照不变性的特征描述子,也同时是一套特征提取的理论,首次由D. G. Lowe于2004年以< ...
- poj 2773 Happy 2006 - 二分答案 - 容斥原理
Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 11161 Accepted: 3893 Description Two ...
- cogs 330. [NOI2003] 文本编辑器
★★★ 输入文件:editor2003.in 输出文件:editor2003.out 简单对比 时间限制:2 s 内存限制:128 MB [问题描述] 很久很久以前,DOS3.x的程序 ...
- 如何替换vi的配色方案
答: 1.获取配色方案 git clone git://github.com/altercation/vim-colors-solarized.git ~/.vim/bundle/vim-colors ...
- 安卓开发 UI入门
布局的类型 线性布局 LinearLayout *** 垂直显示 vertical 水平显示 horizontal 文本适应 wrap_content 填充父窗体 match_parent 权重 l ...
- opencv-python 学习初探2 去图片水印
我要去除的水印是红色的.网上已经有很不错的帖子,我就不贴自己的代码了.留个指路自己以后查资料. 大概的思路就是用颜色拾取工具,拾取水印颜色,分析了图片,找到规律.比如我的图片水印是红色的,红色差不多g ...
- 论文笔记之:End-to-End Localization and Ranking for Relative Attributes
End-to-End Localization and Ranking for Relative Attributes arXiv Paper 摘要:本文提出一种 end-to-end 的属性识别方 ...