我有一个List模型和一个ListItem模型。
在list / show中我有一些代码,然后我调用
=render @list.list_items
在我的list_items / list_item partial中,如果条件存在,我会运行一个循环:
-if condition.exists?
output
-else
output something else
我想要做的是在if condition.exists?
内放一个计数器,以便我知道条件存在多少次。然后,回到列表/显示视图中,我希望能够告诉用户页面顶部的condition.exists?.count
与总@list.list_items.count
。
我不确定如何在渲染部分的if循环内设置计数器。我知道render @list.list_items
应该创建一个list_item_counter', but I only want a counter for the times the condition within the rendered partial exists. Is there a way to trick the
list_item_counter`来实现这样的功能吗?
我也不确定如何在列表/显示视图中访问此条件计数器,因为我需要完成render @list.list_items
,然后以某种方式将计数器值传递回@list。
我真的很感激任何建议,因为我很难过。
答案 0 :(得分:1)
使用内置的Rails部分迭代器无法做任何你想做的事情,Rails提供了一个计数器,它的部分称为list_item_counter
,但每次迭代它总是递增一次,你不能有条件地增加它。
要做你想做的事,你需要创建自己的迭代器,可能是这样的:
- counter = 0
- @list.list_items.each do |item|
- if condition.exists?
- partial = "item"
- counter += 1
- else
- partial = "other_partial"
= render partial: partial, object: item, locals: { counter: counter }
答案 1 :(得分:-2)
试
cnt = 0
-if condition.exists?
output
cnt += 1
-else
output something else
然后cnt
将是您的计数器