rails render partial的问题(collection)

Ruby代码   收藏代码
  1. <% @paginated_hits.each_with_index do |hit, index| %>  
  2.          <%= render :partial => "search/search_item",:locals => {:hit => hit,:index =>index} %>  
  3. <% end %>  

 我在渲染partial的时候,是再外层做了循环,官方文档中有一种用法专门用来render collection的

  • index.html.erb
< h1 >Products</ h1 >
<%= render :partial => "product" , :collection => @products %>
  • _product.html.erb
< p >Product Name: <%= product.name %> </ p >

注意: 在_product.html.erb中的product.name指的是 :partial => "product", 而不是collection 指向的@products的单数,也可以通过as指定参数

<%=render :partial=> "product", :collection=> @products, :as=> :item%>

则在partial页面中可以直接使用itme

<%= itme.name %>

 

在本地做了一个简单的测试:

在index页面:

Ruby代码   收藏代码
  1. <h1>Listing users</h1>  
  2.   
  3. <% @users.each do |user| %>  
  4. <%= render :partial => "your":locals =>{:your => user} %>  
  5. <% end %>  
  6. <br />  
  7.   
  8. <%= link_to 'New User', new_user_path %>  

 _your.html.erb文件中只是简单的输出用户的名字:

 <%= your.name %>

Ruby代码   收藏代码
  1. Started GET "/users" for 127.0.0.1 at 2014-03-07 00:20:24 +0800  
  2. Processing by UsersController#index as HTML  
  3.   [1m[36mUser Load (0.0ms)[0m  [1mSELECT "users".* FROM "users" [0m  
  4.   Rendered users/_your.html.erb (0.0ms)  
  5.   Rendered users/_your.html.erb (0.0ms)  
  6.   Rendered users/_your.html.erb (0.0ms)  
  7.   Rendered users/_your.html.erb (0.0ms)  
  8.   Rendered users/_your.html.erb (0.0ms)  
  9.   Rendered users/_your.html.erb (0.0ms)  
  10.   Rendered users/_your.html.erb (0.0ms)  
  11.   Rendered users/_your.html.erb (0.0ms)  
  12.   Rendered users/_your.html.erb (0.0ms)  
  13.   Rendered users/_your.html.erb (0.0ms)  
  14.   Rendered users/_your.html.erb (0.0ms)  
  15.   Rendered users/_your.html.erb (0.0ms)  
  16.   Rendered users/_your.html.erb (0.0ms)  
  17.   Rendered users/_your.html.erb (0.0ms)  
  18.   Rendered users/_your.html.erb (0.0ms)  
  19.   Rendered users/_your.html.erb (0.0ms)  
  20.   Rendered users/_your.html.erb (0.0ms)  
  21.   Rendered users/index.html.erb within layouts/application (46.9ms)  
  22. Completed 200 OK in 62ms (Views: 62.5ms | ActiveRecord: 0.0ms)  

 页面渲染用了62.5ms

 

如果在index页面这样写:

Ruby代码   收藏代码
  1. <h1>Listing users</h1>  
  2.   
  3. <%= render :partial => "my":collection => @users %>  
  4.   
  5. <br />  
  6.   
  7. <%= link_to 'New User', new_user_path %>  

_my.html.erb文件中:

  <% my.name %>

 

  页面渲染只用了15.6ms

 

速度竟然差了4倍!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值