2015-10-27 30 views
5

跑下來。一個人可以有很多出價,這個人只有一個出價。未定義的方法每個紅寶石

在我的索引行動我有@bids = Bid.find_by_person_id(params[:person_id])

在我看來,我做

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

visting的人出價索引視圖時,我得到NoMethodError: undefined method each' for #<Bid:0x007f988a346f00>

這是因爲這個人只有一個出價?我覺得那不是那種情況,但除此之外我不知所措。

+0

我知道它不是零。我調試驗證。 – Seal

+0

你不能迭代一個記錄我的朋友 – illusionist

回答

12

find_by返回第一項。我認爲你正在尋找

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

ahhh我認爲你是對的 – Seal

+0

好的呼籲,我會盡我所能接受。 – Seal

2

Austio的答案是正確的。

但是,你爲什麼直接調用Bid模型?...

一個人可以有很多投標

你顯然從模型構建的數據,所以爲什麼不呼叫以下內容:

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

這將生成未調用的集合where

當然,您的方法只使用單個數據庫查詢。但即使如此,以上更直觀。

-

順便說一句,你還需要你的循環之前使用條件:

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

一個競價是好的,但有沒有將導致循環吐出一個錯誤。以上解決了這個問題。

+0

這不是真的:「有一個出價很好,但沒有一個會導致循環吐出一個錯誤。」在空集合上調用'each'不會產生錯誤。 – Mischa

+0

對我來說,只要我在空集合上調用它就可以了。 –

+0

不,它不。假設:'@bids = Bid.where(:id => [non-existing-id])'那麼這不會引發任何錯誤:'@ bids.each {| bid | ''。 – Mischa

相關問題