在视图中循环时访问控制器中的属性

时间:2014-03-17 00:23:40

标签: ruby-on-rails erb

我的观点中有一个循环:

<% @deals.each do |d| %>


<% end %>

DealListItem分享:code属性。

如果我想计算所有与list_items共享:code的{​​{1}},那么在迭代循环时如何在控制器中执行此操作?

我理解在视图中正确访问模型是不好的形式?那么这会排除在循环中做这样的事情吗?:

<%= "#{ListItem.where(:code => d.code).count}" %>

我可以使用变量或某些自定义方法来实现此目的吗?如果我能澄清,请告诉我。谢谢!

1 个答案:

答案 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 %>