4

我正在像这样的集合中渲染部分内容:

<%= render :partial => 'issues/issue', :collection => @issues %>

在部分内部,我想渲染一个


除非它是集合中的最后一个元素。我当然可以像这样渲染部分

<%= render :partial => 'issues/issue', :collection => @issues, :locals => {:issue_count => @issues.length } %>

然后把它放在我的部分里面

<% unless issue_counter + 1 == issue_count %>
  <hr />
<% end %>

但我不想在渲染调用中显式设置本地,而且我的集合并不总是被称为@issues,所以我不能只访问实例变量。是否有某种方法可以在部分内部自动访问集合的长度,以判断对象落在集合中的哪个位置?如果还没有,是否可以以我会自动获取本地 issue_count 的方式添加它?对此的任何帮助将不胜感激。

谢谢,

-C

4

2 回答 2

4

您可以为您的通话提供:spacer_template选项。render :partial => X, :collection => Y请参阅ActionController::Base文档以了解使用情况。

为一个简单的元素指定整个部分文件可能感觉很笨拙<hr />,但是走这条路线可以让您的意图清晰,并使项目部分没有不相关的分隔符标记。

于 2009-07-24T16:47:46.097 回答
0

我认为如果你修改 render_partial_collection 方法,你可以做到这一点。

作为旁注:在我看来,您应该改为在无序列表上使用 CSS:我觉得您是在将标记 HR 插入样式而不是使用它在集合中的语义上分离项目(在标记语义中)。

于 2009-07-14T23:00:59.980 回答