2015-09-05 3 views
9

मैं एक मॉडल के क्रूड भाग पर काम कर रहा हूं, जिसमें मैंने छवि समर्थन जोड़ा है। आदर्श रूप में यदि आप एक मॉडल संपादित कर रहे हैं, तो मैं छवि को दिखाना चाहता हूं, जो मैं ऐसा करूंगा।मैं कैसे जांचूं कि एक चर मौजूद है, eex में?

<%= Logo.url({@company.logo, @company}, :thumb) %> 

समस्या यह है कि कंपनी चर संपादित कार्रवाई में ही उपलब्ध है, वहाँ के रूप में अभी तक नए कार्रवाई पर एक कंपनी है, तो मैं अगर @company सेट किया गया है जांच करने की आवश्यकता है।

<%= unless @company do %> 
    <%= Logo.url({@company.logo, @company}, :thumb) %> 
<% end %> 

समस्या यह है कि यह निम्न त्रुटि उत्पन्न करता है।

"@company Eex टेम्पलेट में उपलब्ध नहीं आवंटित उपलब्ध प्रदान करती है:। [: कार्रवाई,: changeset]"

मैं is_nil साथ करने की कोशिश की, लेकिन एक ही त्रुटि।

उत्तर

25

संपादित पहले Phoenix 0.14.0@company वापसी होगी शून्य अगर यह सेट नहीं था। यह


इतना बढ़ाने के लिए है कि काम स्पष्ट हो जाएगा परिवर्तित किया गया (अंतर्निहित पर स्पष्ट।) आप या तो @company या assigns.company तो एक त्रुटि बढ़ा दी जाएगी का उपयोग करते हैं। हालांकि यदि आप assigns[:company] का उपयोग करते हैं तो यह मान शून्य नहीं होगा यदि मान सेट नहीं है।

<%= if assigns[:company] do %> 
    <%= Logo.url({@company.logo, @company}, :thumb) %> 
<% end %> 

यह ध्यान देने योग्य है कि यदि आप एक नेस्टेड टेम्पलेट का उपयोग कर रहे हैं तो आप भी माध्यम से इस पारित करने के लिए की आवश्यकता होगी:।

<h1>New thing</h1> 
<%= render "form.html", changeset: @changeset, 
         action: thing_path(@conn, :create), 
         company: assigns[:company] %> 
+5

आदर्श यद्यपि में कंपनी चर पारित करने के लिए है यहां तक ​​कि अगर कहीं भी होगी शून्य हो यह संकेत का एक गुच्छा से बच जाएगा। –

+0

@ जोसेवलिम यह एक अच्छा मुद्दा है - मैं जवाब में एक नोट जोड़ने जा रहा हूं। – Gazler

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