rails view层的具体细节(四)

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


局部样板Partials

局部样板可以将Template中重复的程式码抽出来,例如我们在Part1中示范过的新增和编辑的表单。Partial Template的命名惯例是底线开头,但是呼叫时不需加上底线,例如:

<%= render :partial => "common/nav" %>

这样便会使用app/views/common/_nav.html.erb这个样板。如果使用Partial的样板和Partial所在的目录相同,可以省略第一段的common路径。

Partial样板中是可以直接使用实例变数的(也就是@开头的变数)。不过好的实务作法是透过:locals明确传递区域变数,这样程式会比较清楚,Partial样板也比较容易被重复使用:

<%= render :partial => "common/nav", :locals => { :a => 1, :b => 2 } %>

这样在partial样板中,就可以存取到区域变数ab

如果是阵列的资料,一般直觉会这样写:

@items.each do |item|
  render :partial => "item", :locals => { :item => item }
end

但是,partial可以支援处理阵列形式:

render :partial => "item", :collection => @items, :as => :item

这样的好处不只是少打字而已,还有效能上的好处,Rails会针对这种形式做最佳化。

集合型Collection

像是trli这类会一直重复的Template元素,我们可以使用collection参数来处理,Rails有针对集合型的Partial做效率最佳化,例如像以下的程式:

<ul>
    <% @people.each do |person| %>
        <%= render :partial => "person", :locals => { :person => person } %>
    <% end %>
<ul>

可以改使用Collection方式,

<ul>
    <%= render :partial => "person", :collection => @people %>
<ul>

如此既可以少掉两行each程式码,执行的效能又更好。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值