2012-12-14 7 views
11

यह इतना आसान है कि यह कोई मुद्दा नहीं होना चाहिए, लेकिन मुझे नहीं पता कि यहां क्या हो रहा है।रेल आंशिक रूप से प्रस्तुत करते हैं: संग्रह

मैं निम्नलिखित कोड

class DashboardController < ApplicationController 
    def bookings 
     @bookings = Booking.all 
    end 
end 

/views/dashboard/bookings.html.erb

<%= render 'booking', :collection => @bookings %> 

/views/dashboard/_booking.html.erb

<%= booking.booking_time %> 

मुझे निम्न त्रुटि मिलती है

undefined method `booking_time' for nil:NilClass 

लेकिन अगर मैं /views/dashboard/_bookings.html.erb में ऐसा

<% @bookings.each do |booking| %> 
    <%= render 'booking', :booking => booking %> 
<% end %> 

मैं (सही) प्राप्त

2012-12-19 09:00:00 UTC 
2012-12-28 03:00:00 UTC 

क्या यहाँ पर जा रहे हैं? मैं वास्तव में उपयोग करना चाहता हूं: यहां परिभाषित संग्रह http://guides.rubyonrails.org/layouts_and_rendering.html

उत्तर

13

यह एक पुरानी सवाल यह है कि लेकिन सिर्फ मामले दूसरों यह

एक आंशिक एक बहुवचन संग्रह के साथ कहा जाता है जब साथ संघर्ष कर रहे हैं, तो आंशिक की व्यक्तिगत उदाहरणों संग्रह के सदस्य के लिए उपयोग किया को आंशिक के नाम पर एक चर के माध्यम से प्रस्तुत किया जा रहा है।

http://guides.rubyonrails.org/layouts_and_rendering.html

ओपी से ऊपर के उदाहरण में से

, क्योंकि आंशिक bookings के बजाय booking बुलाया गया था, रेल सदस्य नाम अनुमान लगाने के लिए असफल रहा था पारित करने के लिए आंशिक है, इसलिए जरूरत में प्रयोग की जाने वाली यह स्पष्ट रूप से as: :booking

+0

यह स्वीकार्य उत्तर होना चाहिए! –

4

आपकी कॉल करने के लिए कॉल गाइड में दिखाए गए से अलग है। क्या आपने render :partial => 'booking', :collection => @bookings को आजमाया है?

मेरा मानना ​​है कि आप भी यह मानते हुए कि रेल 3 या बाद में हैं कम विकल्प का उपयोग करने के लिए सक्षम होना चाहिए: render @bookings

+0

धन्यवाद। हाँ मैंने प्रस्तुत करने की कोशिश की है: आंशिक => 'बुकिंग', संग्रह => @ बुकिंग - लेकिन यह वही – 32423hjh32423

+7

विषम है, जोड़ रहा है: as =>: रेंडर कॉल में बुकिंग कुछ भी बदलती है? – cbascom

+4

': as =>: बुकिंग 'ने मेरे लिए यह तय किया है, मुझे लगता है कि यह संग्रह से एकवचन नाम का अनुमान लगाने के लिए कोई रेल जादू नहीं करता है। – omnikron