यह मुझे चकित करता है। मैंने अब कुछ हफ़्ते के लिए इस पर अपना सिर फोड़ लिया है और कहीं नहीं जा रहा हूँ। क्षमा करें यदि यह स्पष्ट है, मैं अभी भी एक रेल नौसिखिया हूँ ...

ऐप अनस्प्लैश पिक्चर्स सर्विस को एपीआई कॉल कर रहा है।

जैसे application_helper में निम्न विधि है:

def show_photo(size)
 @photo = Unsplash::Photo.random(query:"cars")[:urls][size.to_sym]
end

दृश्य में निम्नलिखित है:

 <%= image_tag(show_photo('small'), height: "220", width:"220") %>

और यह ठीक प्रदर्शित करता है।

मुद्दा यह है कि जब मैं ओजेक्ट से कुछ अन्य तरीकों को खींचना चाहता हूं। मैंने इस तरह से मदद की गई एप्लिकेशन में एक और तरीका जोड़ा है:

def show_author
  @photo.user.name
end

और संबंधित दृश्य: द्वारा फोटो: <%= show_author%>

फिर मुझे यह त्रुटि मिलती है: # के लिए अपरिभाषित विधि 'उपयोगकर्ता'

हालांकि रेल कंसोल में विधि को कॉल करते समय यह ठीक काम करता है:

@photo = Unsplash::Photo.random(query:"cars")
=> #<Unsplash::Photo:0x00000004fcf950 @attributes=#<OpenStruct id="CKeoh-
    90U3E", created_at="2017 .......

2.3.0 :003 > @photo.user.name
 => "Florian Schneider" 

उपयोगकर्ता नाम को दृश्य में उपलब्ध कराने के लिए मुझे क्या करने की आवश्यकता है?

अग्रिम में बहुत बहुत धन्यवाद,

Rodolphe

-1
Rodolphe Geant 21 अक्टूबर 2017, 21:27
अगर आप पोस्ट किए गए उत्तरों का जवाब देंगे तो सराहना करेंगे।
 – 
theartofbeing
22 अक्टूबर 2017, 02:47

1 उत्तर

सबसे बढ़िया उत्तर

@photo फ़ोटो नहीं है, ऐसा लगता है कि आप @photo पर [:urls][size.to_sym] के साथ कुछ मेटा-डेटा कॉल कर रहे हैं और आप उस मेटा-डेटा के ऊपर .user को कॉल नहीं कर सकते।

आप अनिवार्य रूप से कह रहे हैं Unsplash::Photo.random(query:"cars")[:urls][size.to_sym].user

आप निम्न कार्य करना चाह सकते हैं:

def photo
 @photo ||= Unsplash::Photo.random(query:"cars")
end

def resized_photo(size)
 photo[:urls][size.to_sym]
end

def photo_author_name
  photo.user.name
end

Btw @photo ||= API कॉल को याद कर रहा है, इसलिए आप एक ही कॉल को कई बार नहीं कर रहे हैं।

1
theartofbeing 21 अक्टूबर 2017, 22:09
Theartofbeing, आपके उत्तर के लिए धन्यवाद, यह बिल्कुल ठीक काम कर रहा है! और यह पूरी तरह से समझ में आता है ... देर से उत्तर के लिए खेद है, लेकिन मैं पेशेवर कारणों से अपने मैक से दूर था!
 – 
Rodolphe Geant
23 अक्टूबर 2017, 12:43