失败了。一个人可以有很多出价,这个特定的人只有一个出价。
在我的索引操作中,我有@bids = Bid.find_by_person_id(params[:person_id])
在我看来我做了
<% @bids.each do |bid| %>
<%= bid.bid_amount %>
<% end %>
我在访问人员出价的索引视图时收到NoMethodError: undefined method each' for #<Bid:0x007f988a346f00>
。
这是因为这个人只有一个出价吗?我觉得情况并非如此,但除此之外我不知所措。
答案 0 :(得分:12)
find_by
返回第一项。我想你正在寻找
Bid.where(person_id: params[:person_id])
答案 1 :(得分:2)
Austio
的回答是正确的。
但是,为什么要直接调用Bid
模型?...
一个人可以有很多出价
您显然是从 person 模型构建数据,为什么不调用以下内容:
@person = Person.find params[:person_id]
@bids = @person.bids #-> bids belong to @person
这将构建集合而不调用where
。
当然,您的方法仅使用单个数据库查询。但即使如此,上述内容也更为直观。
-
顺便说一句,你还想在循环之前使用条件:
<% if @bids.any? %>
<% @bids.each.... %>
<% end %>
一个出价很好,但是 none 会导致循环吐出错误。以上解决了这个问题。