【问题标题】:collection counter in rails partialsrails partials 中的收集柜台
【发布时间】:2009-07-25 00:47:46
【问题描述】:

我正在像这样在集合中渲染一个部分:

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

在partial里面,我要渲染一个


元素,除非它是集合中的最后一个。我当然可以像这样渲染部分
<%= render :partial => 'issues/issue', :collection => @issues, :locals => {:issue_count => @issues.length } %>

然后把这个放在我的部分里面

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

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

谢谢,

-C

【问题讨论】:

    标签: ruby-on-rails collections partial-views


    【解决方案1】:

    您可以为您的render :partial =&gt; X, :collection =&gt; Y 调用提供:spacer_template 选项。用法见ActionController::Base documenation

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

    【讨论】:

    • 虽然这并没有真正让我知道部分内的计数,但它似乎确实消除了对它的需要:) thx -C
    【解决方案2】:

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

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

    【讨论】:

    • 是的,也许是这样,但它很快。另外,知道该怎么做是件好事:)
    • 这并不比将部分内容包装在
    • 标记集中更快。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签