2011-11-30 36 views
0

我知道,我可能有太多的逻辑在我看来,所以我不知道我怎么可以将其包含在我的控制器:的Rails:切割按下码

控制器:

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

回答

4

我建议您在视图代码中删除对User.find的调用。

看起来您正在查找存储在购买中的user_id的用户。为什么不能在模型中使用:

class Purchase < ActiveRecord::Base 
    belongs_to :user 
    ... 
end 

然后在视图代码:

<% @pl.each do |purchase| %> 
    <%= purchase.user.email %><BR> 
<% end %> 

希望这有助于。

0

看起来您可能没有在“采购和用户”模型中正确设置关联。而不是做u = User.find(p.user_id)你应该可以写p.user.email,假设每个Purchasebelongs_to :user

0

如果您的购买模型属于用户模型,则无需使用User.find查找用户。 如果没有,属于你的购买模式,用户模式,然后

<% @pl.each do |p| %> 
    <%= p.user.email %> 
<% end %> 
0

它也是值得注意的下面可以加以改进,以充分利用Rails的技能,当它comoes到缓存集合:

<%= @pl.count %> 

<%= @pl.size %> 

size方法将返回购买的数量,但再次因为他们已经看不会加载对象到内存编辑在控制器中。