मैं रेल के लिए नौसिखिया हूँ इसलिए कृपया धैर्य रखें
वर्तमान में यह मेरे विचार फ़ोल्डर में घरों के लिए मेरा शो पेज है
.wrapper_with_padding
#house.show
%h1= @house.title
%p= number_to_currency(@house.price, :unit => "£")
%p= simple_format(@house.description)
Occupied: #{@house.occupied}
%br/
Tenant: #{@house.tenant.first_name} #{@house.tenant.last_name}
यह ठीक प्रदर्शित होता है जब डीबी हाउस मॉडल में किरायेदार_आईडी के लिए मान रखता है, लेकिन जब किरायेदार आईडी हाउस रिकॉर्ड्स के लिए शून्य है तो मुझे नीचे त्रुटि मिलती है।
C:/Sites/landlord2/app/views/houses/show.html.haml दिखा रहा है जहाँ लाइन #8 उठाई गई है:
शून्य के लिए अपरिभाषित विधि 'first_name': NilClass।
शो में वैसे भी बदलने के लिए है
Tenant: #{@house.tenant.first_name} #{@house.tenant.last_name}
तो यदि किरायेदार_आईडी खाली है तो यह कुछ टेक्स्ट प्रदर्शित कर सकता है?
धन्यवाद
2 जवाब
हे, आप केवल if @house.tenant.present?
पूछ सकते हैं, और यदि वांछित पाठ प्रदर्शित नहीं करते हैं, तो निम्न कोड की तरह:
.wrapper_with_padding
#house.show
%h1= @house.title
%p= number_to_currency(@house.price, :unit => "£")
%p= simple_format(@house.description)
Occupied: #{@house.occupied}
%br/
-if @house.tenant.present?
Tenant: #{@house.tenant.first_name} #{@house.tenant.last_name}
-else
%p= 'Text to display if tenant is blank'
व्यक्तिगत रूप से, मैं टेम्पलेट तर्क के साथ दृश्य को भरने का बड़ा प्रशंसक नहीं हूं।
सहायक विधि का उपयोग करने के लिए यह शायद एक अच्छी जगह होगी।
अपनी house_helper.rb फ़ाइल में, एक current_tenant
विधि बनाने का प्रयास करें जो कुछ इस तरह दिखाई दे।
def current_tenant(house)
if house.tenant
"#{house.tenant.first_name} #{house.tenant.last_name}"
else
"Vacant"
end
end
साथ ही, किरायेदार का पूरा नाम प्रदर्शित करने जैसा कुछ ऐसा हो सकता है जो आप बहुत कुछ कर रहे हों। इस प्रकार, अपने टैनेंट मॉडल पर एक full_name
विधि जोड़ना अच्छा हो सकता है ताकि आप उसका पुन: उपयोग कर सकें।
class Tenant
...
def full_name
"#{first_name} #{last_name}"
end
...
end
इस तरह, आप सहायक विधि को कुछ सरल के रूप में साफ कर सकते हैं:
def current_tenant(house)
return "Vacant" unless house.tenant
house.tenant.full_name
end
और आपका विचार भी साफ हो जाता है:
.wrapper_with_padding
#house.show
%h1= @house.title
%p= number_to_currency(@house.price, :unit => "£")
%p= simple_format(@house.description)
Occupied: #{@house.occupied}
%br/
Tenant: #{current_tenant(@house)}
संबंधित सवाल
नए सवाल
ruby-on-rails
रूबी ऑन रेल्स रूबी में लिखा गया एक ओपन सोर्स फुल-स्टैक वेब एप्लिकेशन फ्रेमवर्क है। यह लोकप्रिय एमवीसी फ्रेमवर्क मॉडल का अनुसरण करता है और इसे "कॉन्फिगरेशन ओवर कॉन्फिगरेशन" अप्रोच डेवलपमेंट के दृष्टिकोण के लिए जाना जाता है।