rails view层的具体细节(五)

转自:http://ihower.tw/rails3/actionview.html

Rails中,Helper指的是可以在Template中使用的辅助方法,主要用途是可以将资料转化成输出用的HTML字串,例如我们已经用过了Rails内建的link_to方法,它可以将字串变成超连结。Rails还内建了许多Helper方法,可以让我们建构HTML更为容易。我们在一章中将介绍其中较为常用的几个方法。

另一个使用Helper的理由是可以简化Template中的复杂结构,将Template中较为复杂的程式都用Helper包装起来,最好让Template只包含单纯的变数以及最简单的条件逻辑和回圈,这样就算是不会程式的网页设计师,也能够轻易了解套版甚至修改Template样板。

因为Helper预设只能在Template中使用,如果想在rails console中呼叫,必须加上helper,例如helper.link_to另外,虽然机会不多,如果真的要在Rails ControllerModel程式中呼叫Helper,则可以加上ApplicationController.helpers前置词。

静态档案辅助方法

使用Rails内建的静态档案(Assets)辅助方法有几个好处:

  • Rails会合并StylesheetJavasSript档案,可以加速浏览器的下载。
  • Rails会编译SassCoffeeScript等透过Assets template engine产生的StylesheetJavasSript
  • Rails会在静态档案网址中加上时间序号,如果内容有修改则会重新产生。这样的好处是强迫用户的浏览器一定会下载到最新的版本,而不会有浏览器快取到旧版本的问题。
  • 变更Assets host主机位址时,可以一次搞定,例如上CDN时。透过HelpersRails可以帮所有的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_tag​​s
=> #<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_tag​​s = %w[table tr td]
config.action_view.sanitized_allowed_attributes = "rel"
strip_tags

移除HTML标签

移除HTML超连结标签


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值