我知道我的视图中可能有太多逻辑,所以我想知道如何将它包含在我的控制器中:
控制器:
def purchasers
@deal = Deal.find(params[:id])
@pl = @deal.purchases
end
查看:
<% title "List Of Purchases" %>
Total Purchases: <%= @pl.count %><BR><BR>
<%
@pl.each do |p|
u = User.find(p.user_id)
%>
<%= u.email %><BR>
<%
end
%>
答案 0 :(得分:4)
我建议您删除查看代码中对User.find
的调用。
看起来您正在从购买中存储的user_id
中查找用户。为什么不在模型中使用:
class Purchase < ActiveRecord::Base
belongs_to :user
...
end
然后在视图代码中:
<% @pl.each do |purchase| %>
<%= purchase.user.email %><BR>
<% end %>
希望这有帮助。
答案 1 :(得分:0)
看起来您可能没有在“购买”和“用户”模型中正确设置关联。假设每个u = User.find(p.user_id)
p.user.email
。
Purchase
,您应该能够写belongs_to :user
。
答案 2 :(得分:0)
如果您的购买模型属于用户模型,则无需使用User.find查找User。 如果没有,则将您的购买模型归属于用户模型
<% @pl.each do |p| %>
<%= p.user.email %>
<% end %>
答案 3 :(得分:0)
值得注意的是,以下可以改进以利用Rails的技巧来缓存集合:
<%= @pl.count %>
到
<%= @pl.size %>
size
方法将返回购买次数,但不会再次将对象加载到内存中,因为它们已在控制器中查找过。