2013-06-24 9 views
13

क्या रेलों को प्रस्तुत किए जा रहे दृश्य से जल्दी या "वापसी" से बाहर निकलने का कोई तरीका प्रदान करता है?क्या रेल में एक दृश्य से प्रारंभिक निकास या "वापसी" करने का कोई तरीका है?

<h1>Your records summary</h1> 

<% if @current_user.has_records? %> 
    <p>You don't have any records.</p> 
<% else %> 
    ... long block of view emission code here ... 
<% end %> 

गैर ERB कोड में, मैं सिर्फ return कि if हालत से, और एक के अंदर है कि लंबी ब्लॉक डाल करने के लिए की जरूरत नहीं होगी चाहते हैं:

उदाहरण के लिए, मैं एक दृश्य के रूप में इस तरह बनाया है else। यह इस तरह दिखेगा:

<h1>Your records summary</h1> 

<% if @current_user.has_records? %> 
    <p>You don't have any records.</p> 
    <% return (or something) %> 
<% end %> 
... long block of view emission code here ... 

क्या इस तरह के कुछ ऐसा करने का कोई तरीका है?

संपादित करें: स्पष्ट है कि, मैं वैकल्पिक के लिए नहीं पूछ रहा हूँ दृष्टिकोण, जैसे सुझाव दिया गया है। मैं एक रेल नोब नहीं हूँ। मैं वास्तव में जानना चाहता हूं कि रूबी ने जो सुझाव दिया है या नहीं, उसके लिए एक तंत्र प्रदान करता है या नहीं।

+0

वास्तव में नहीं, लेकिन आईएमओ जो शायद गलत दृष्टिकोण होगा। इसके बजाय विभिन्न टेम्पलेट्स और/या आंशिक का उपयोग करने पर विचार करें। –

+0

"नहीं" एक पूरी तरह स्वीकार्य उत्तर है। हालांकि, मैं एक टिप्पणी "स्वीकार" नहीं कर सकता। –

+0

स्टैक ओवरफ्लो को टिप्पणी/उत्तर के लिए कम से कम 15 वर्णों की आवश्यकता है। तो एक साधारण "नहीं" संभव नहीं है। ;) – lurker

उत्तर

4

आईआईआरसी के पास टेम्पलेट से बाहर निकलने के लिए कोई अंतर्निहित तंत्र नहीं है। यह कैसे है (मुझे लगता है) एक दृश्य परत व्यवहार करना चाहिए, हालांकि erb काफी टेम्पलेट इंजन नहीं है।

पुराना समय का समाधान आपके टेम्पलेट को catch में लपेटना था और एक प्रतीक की तरह टेम्पलेट के भीतर से कुछ फेंकना था।

आप काम करने के लिए return को अनुमति देने, एक लांबा के अंदर eval भी एम्बेड कर सकते हैं।

फिर भी, हालांकि।

+2

कोशिश/पकड़ का उपयोग करने का विचार कुछ हद तक उल्लसित है। –

2

टेम्पलेट को प्रस्तुत करने से पहले अपने नियंत्रक में सशर्त को संभालने का सबसे अच्छा तरीका है। वहां आप return प्रारंभिक टेम्पलेट (जैसे रिकॉर्ड जोड़ें फॉर्म) या परिणाम टेम्पलेट कर सकते हैं।

आप दृश्य में जावास्क्रिप्ट को उस तर्क को ऑफ़लोड भी कर सकते हैं।

+0

धन्यवाद, लेकिन मुझे यह पता है। मैं वैकल्पिक दृष्टिकोण नहीं मांग रहा था। बस पूछना कि क्या मैंने सुझाव दिया है। –

4

रेल 3.2.2 में, एक टेम्पलेट के अंदर वापस मेरे लिए ठीक काम करता है।

<% return unless allowed_tags %> 
+0

मैंने इस विधि का भी पहले उपयोग किया है। क्या कोई इसे नकारात्मक कर सकता है? –

+3

@Gerry, रिटर्न कथन से पहले मार्कअप को रिटर्न निष्पादित होने पर मामलों में प्रस्तुत नहीं किया जाता है। – psparrow

+0

आह, धन्यवाद @psparrow। यदि मैं इसका उपयोग करता हूं, तो मैंने किसी भी मार्क अप को प्रस्तुत करने से पहले इसे केवल एक दृश्य के शीर्ष पर ही किया है, इसलिए इसे कभी नहीं देखा। –

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

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