Rails render partial collection

本文介绍了Rails框架中如何正确地在partial视图中使用collection。详细解释了默认循环变量的约定及如何通过:as参数自定义变量名,避免常见的错误如重复输出和异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Rails 在 partial 中 传递 collection,默认的循环变量 是 partial的名字(约定)。或者你想改变变量名的话,可以使用 :as 参数声明一个变量。。。不能用惯性思想 for ...........in........等

例如:
之前错误的写法:
partial : _feednews.html.erb
 <%= render :partial => 'shared/feednews_item',:collection => @feeds = feed_collection("hot").items %>

partial : _feednews_item.html.erb
  <ul>
<% for feed in @feeds.items %>
  <li  class="news"><a  href="<%= feed_link(feed.link) %>" target="_blank"><%=  feed_title(feed.title) %></a><br />
  <span class="grey small"><span> <%= feed_from(feed.title) %></span>&nbsp;&mdash;&nbsp;<span><%= feed.pubDate.to_date %></span></span></li>
<% end %>
 </ul>

上面第二个 partial 显示的结果 for 循环 输出 后的 加上 rails 约定的partial collection 循环输出了。。结果重复。。做的过程中还遇到 partial collection empty 这个异常

原因是 feed_collection("hot").items  返回的结果不是一个 collection..

正确的写法:
partial : _feednews.html.erb
 <div><%= render :partial => 'shared/feednews_item',:collection => feed_collection("hot").items %></div>

partial : _feednews_item.html.erb
<ul>
  <% unless feednews_item.nil? %>
    <li  class="news"><a  href="<%= feed_link(feednews_item.link) %>" target="_blank"><%=  feed_title(feednews_item.title) %></a><br />
    <span class="grey small"><span> <%= feed_from(feednews_item.title) %></span>&nbsp;&mdash;&nbsp;<span><%= feednews_item.pubDate.to_date %></span></span></li>
  <% end %>
</ul>

从上面的prtial中可以看出 变量 是feednews_item 也就是partial的名字
 

总结,一句话,如果 你在 partial 中 传了 collection ,那么 就用 partial的名字 作变量输出, 不需要 迭代, 如果 没有 传collection , 那么 就需要 迭代输出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值