使用rails自带方法去除html标签
来源:互联网 发布:mac桌面文件路径 编辑:程序博客网 时间:2024/05/23 19:29
最近需要导出富文本文章到excel(GEM:spreadsheet),数据库存的带有html标签和图片,需要只导出必要的文本,所以有了这个需求
其实直接编写一个正则表达式可以解决这个问题,但是重复造轮子是没必要的,在查找rails api (我用的rails4.2+)时,找到了
ActionView::Helpers::SanitizeHelper sanitize()
这个方法在view中会经常使用但是它有两个问题
先说第一个不能过滤全部html标签,这是因为这个方法本身是用来防止注入攻击的。
然后找到了
ActionView::Helpers::SanitizeHelper strip_tags()
看似不错但是像 “\r, \t, \n”之类的还是没有删除,如何去除这些格式符,正则可以用但别忘了DRY原则,rails自己就有一个方法
String < Object squish()
squish拓展了String 提供合并两端空格并清除ASCII 和 Unicode的 whitespace。
之前说有二个问题,问题就是:strip_tags()功能是不错但是它是ActionView的helper方法,属于MVC中的V,而我们处理内容一般在M中也有逻辑简单的在C中,如何调用V层的method在M、C中使用?
简单暴力用法直接include
include ActionView::Helpers::SanitizeHelper
现在是可以直接使用方法了,但是引出了另一个问题,破坏了原有的模型封装,更有可能引起方法冲突
在ruby中可以使用单例类解决
def method_name @helper ||= Class.new do include ActionView::Helpers::SanitizeHelper end.newend
最终使用
method_name.strip_tags(string_content).squish
当然这只是针对很少使用的情况, code for fun。
阅读全文
0 0
- 使用rails自带方法去除html标签
- 如何去除苹果浏览器的自带HTML标签样式
- python自带re模块正则表达式去除html标签
- h标签本身自带间距 去除方法
- 正则表达式去除数据带HTML标签方法
- ckeditor 去除自带的<p>标签
- html dom(input)标签自带click方法
- C#去除HTML标签方法
- Struts2不使用自带标签库执行method方法
- html自带的滚动标签
- html标签缺省(自带)样式大全
- ios 方法 HTML数据中去除 标签
- iOS 调用js方法,去除HTML标签
- python去除所有html标签的方法
- 用php自带函数去除html标记
- 用php自带函数去除html标记
- PHP中使用strip_tags() 去除html标签
- Python:使用正则去除HTML标签
- 保护模式下的应用
- SourceTree安装与使用方法
- MATLAB
- Scala中apply方法以及函数返回有无unit的区别
- android 偏好保存数据
- 使用rails自带方法去除html标签
- LeetCode 58 Length of Last Word
- 差分约束——vijos1589
- iOS系统库头文件中NS_AVAILABLE和NS_DEPRECATED_IOS相关
- 自定义View练习
- yii2用gii生成crud为什么views找不到生成文件
- centos 6.5 和centos 7关于防火墙的命令
- 58 同城移动端 Passport SDK 的设计与技术细节
- 在Servlet中request.setCharacterEncoding() response.setCharacterEncoding() response.setContentType()区别