转自:http://ihower.tw/rails3/actionview.html
在Rails中,Helper指的是可以在Template中使用的辅助方法,主要用途是可以将资料转化成输出用的HTML字串,例如我们已经用过了Rails内建的link_to
方法,它可以将字串变成超连结。Rails还内建了许多Helper方法,可以让我们建构HTML更为容易。我们在一章中将介绍其中较为常用的几个方法。
另一个使用Helper的理由是可以简化Template中的复杂结构,将Template中较为复杂的程式都用Helper包装起来,最好让Template只包含单纯的变数以及最简单的条件逻辑和回圈,这样就算是不会程式的网页设计师,也能够轻易了解套版甚至修改Template样板。
静态档案辅助方法
使用Rails内建的静态档案(Assets)辅助方法有几个好处:
- Rails会合并Stylesheet和JavasSript档案,可以加速浏览器的下载。
- Rails会编译Sass和CoffeeScript等透过Assets template engine产生的Stylesheet和JavasSript
- Rails会在静态档案网址中加上时间序号,如果内容有修改则会重新产生。这样的好处是强迫用户的浏览器一定会下载到最新的版本,而不会有浏览器快取到旧版本的问题。
- 变更Assets host主机位址时,可以一次搞定,例如上CDN时。透过Helpers,Rails可以帮所有的Assets加上静态档案伺服器网址。
几个常用的方法:
- javascript_include_tag
- stylesheet_link_tag
- image_tag
- video_tag
- audio_tag
格式化辅助方法
simple_format
将\n
换行字元换成HTML的<br>
标签
truncate
撷取前n个字元
sanitize
白名单逸出
预设允许的HTML标签和属性如下:
ActionView::Base.sanitized_allowed_tags
=> #<Set: {"strong", "em", "b", "i", "p", "code", "pre", "tt", "samp", "kbd", "var" , "sub", "sup", "dfn", "cite", "big", "small", "address", "hr", "br", "div", "span", "h1", " h2", "h3", "h4", "h5", "h6", "ul", "ol", "li", "dl", "dt", "dd", "abbr", "acronym" , "a", "img", "blockquote", "del", "ins"}>
ActionView::Base.sanitized_allowed_attributes
=> #<Set: {"href", "src", "width", "height", "alt", "cite", "datetime", "title", "class", "name", "xml: lang", "abbr"}>
如果需要增加,可以在config/application.rb
中新增,例如:
config.action_view.sanitized_allowed_tags = %w[table tr td]
config.action_view.sanitized_allowed_attributes = "rel"
strip_tags
移除HTML标签
strip_links
移除HTML超连结标签