我的观点中有一个循环:
<% @deals.each do |d| %>
<% end %>
Deal
和ListItem
分享:code
属性。
如果我想计算所有与list_items
共享:code
的{{1}},那么在迭代循环时如何在控制器中执行此操作?
我理解在视图中正确访问模型是不好的形式?那么这会排除在循环中做这样的事情吗?:
<%= "#{ListItem.where(:code => d.code).count}" %>
我可以使用变量或某些自定义方法来实现此目的吗?如果我能澄清,请告诉我。谢谢!
答案 0 :(得分:1)
您希望在渲染视图之前在控制器操作中对服务器执行所有计算。
因此,除了收集@deals
之外,您还将为计数设置一个实例变量。
def index
@deals = Deals.all # or whatever your finder is
@common_listitem_count = ListItem.where(code: @deals.pluck(:code)).count
end
然后只需在视图中调用count实例变量:
<%= @common_listitem_count %>