的Rails:切割按下码
问题描述:
我知道,我可能有太多的逻辑在我看来,所以我不知道我怎么可以将其包含在我的控制器:的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
%>
答
我建议您在视图代码中删除对User.find
的调用。
看起来您正在查找存储在购买中的user_id
的用户。为什么不能在模型中使用:
class Purchase < ActiveRecord::Base
belongs_to :user
...
end
然后在视图代码:
<% @pl.each do |purchase| %>
<%= purchase.user.email %><BR>
<% end %>
希望这有助于。
答
看起来您可能没有在“采购和用户”模型中正确设置关联。而不是做u = User.find(p.user_id)
你应该可以写p.user.email
,假设每个Purchase
belongs_to :user
。
答
如果您的购买模型属于用户模型,则无需使用User.find查找用户。 如果没有,属于你的购买模式,用户模式,然后
<% @pl.each do |p| %>
<%= p.user.email %>
<% end %>
答
它也是值得注意的下面可以加以改进,以充分利用Rails的技能,当它comoes到缓存集合:
<%= @pl.count %>
到
<%= @pl.size %>
的size
方法将返回购买的数量,但再次因为他们已经看不会加载对象到内存编辑在控制器中。