繁体   English   中英

每个Ruby都有未定义的方法

[英]Undefined method each Ruby

破败不堪。 一个人可以有很多出价,这个特定的人只有一个出价。

在我的索引操作中,我有@bids = Bid.find_by_person_id(params[:person_id])

在我看来,我做到了

<% @bids.each do |bid| %>
   <%= bid.bid_amount %>
<% end %>

我在获取人员出价的索引视图时得到NoMethodError: undefined method each' for #<Bid:0x007f988a346f00>

这是因为这个人只有一个出价吗? 我觉得不是这样,但除此之外我不知所措。

find_by返回第一个项目。 我想你在找

Bid.where(person_id: params[:person_id])

Austio的回答是正确的。

但是,为什么要直接调用Bid模型?...

一个人可以有很多出价

您显然是从人员模型构建数据,所以为什么不调用以下内容:

@person = Person.find params[:person_id]
@bids = @person.bids #-> bids belong to @person

这将构建集合而不调用where

当然,您的方法仅使用单个数据库查询。 但即使如此,上述内容也更为直观。

-

另外,您还需要在循环之前使用条件:

<% if @bids.any? %>
   <% @bids.each.... %>
<% end %>

一个出价很好,但没有一个会导致循环吐出错误。 以上解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM