2015-10-27 8 views
5

रन डाउन। एक व्यक्ति के पास कई बोलियां हो सकती हैं, इस विशेष व्यक्ति के पास केवल एक बोली है।अपरिभाषित विधि प्रत्येक रूबी

मेरी सूचकांक कार्रवाई में मैं मैं

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

जब व्यक्ति बोली के लिए सूचकांक दृश्य पर जाकर मैं NoMethodError: undefined method each' for #<Bid:0x007f988a346f00> हो रही है ऐसा मेरे विचार में @bids = Bid.find_by_person_id(params[:person_id])

है।

इस है क्योंकि वह व्यक्ति केवल एक ही बोली नहीं है? मैं thats नहीं मामला है, लेकिन अन्य नुकसान में है कि im से ..

+0

मुझे पता है कि यह हालांकि नहीं के बराबर नहीं है। मैं सत्यापित करने के लिए डीबग किया। – Seal

+0

आप एक ही रिकॉर्ड से अधिक पुनरावृति नहीं कर सकते हैं मेरे दोस्त – illusionist

उत्तर

12

find_by पहला आइटम रिटर्न लग रहा है। मुझे लगता है कि आप

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

आह मुझे लगता है कि आपके हैं कि पर सही – 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

यह सच नहीं है: "एक बोली रखना ठीक है, लेकिन कोई भी होने से लूप को एक त्रुटि थूकने का कारण बन जाएगा।" खाली संग्रह पर 'प्रत्येक' को कॉल करने से कोई त्रुटि नहीं निकल जाएगी। – Mischa

+0

मेरे लिए जब भी मैं इसे एक खाली संग्रह पर बुलाता हूं। –

+0

नहीं, यह नहीं है। मान लें: '@bids = बोली। कहीं (: id => [non-current-id])' तो यह कोई त्रुटि नहीं फेंकता है: 'bids.each {| bid | ...} '। – Mischa

संबंधित मुद्दे