2010-10-29 16 views
22

मैं उपयोगकर्ताओं को एक साधारण संदेश प्रदर्शित करने के लिए फ्लैश [: त्रुटि] का उपयोग करता हूं कि वे कुछ शर्तों के तहत एक डिलीट ऑपरेशन नहीं कर सकते हैं। मेरे पास एक लिंक भी है जो उन्हें उस इकाई के बारे में जानकारी प्राप्त करने में मदद करेगा जो वे हटाना चाहते थे और वे ऐसा क्यों नहीं कर सकते।रेल में एचटीएमएल का उपयोग फ्लैश संदेश

क्या यह फ़्लैश संदेश में इस हाइपरलिंक को शामिल करने की सलाह दी जाती है? जिसका मतलब है कि मेरे नियंत्रक में एक HTML खंड होगा। यदि नहीं, तो मैं यह करने के बारे में कैसे जाऊं?

+5

अगर डाउनवोट समझाया गया तो अच्छा होगा! * कुछ कारणों से * sigh * –

उत्तर

38

आप नियंत्रक से अपने फ़्लैश संदेश में एक लिंक शामिल करना चाहते हैं वहाँ 2 मुद्दे हैं। लिंक उत्पन्न करना और फिर इसे HTML के रूप में प्रदर्शित करना।

नियंत्रक में link_to सहायक का उपयोग करने के लिए, इसे पूरी तरह अर्हता प्राप्त करें।

स्ट्रिंग को एचटीएमएल (बचने के बजाए) के रूप में प्रदर्शित करने के लिए, स्ट्रिंग पर html_safe विधि को कॉल करें। तो आपके नियंत्रक की रेखा इस तरह दिख सकती है:

flash[:error] = "You can't do that. #{ActionController::Base.helpers.link_to "Here's why.", '/more_info.html'}".html_safe 
+0

, जब मैं अपने फ़्लैश संदेश पर .html_safe का उपयोग करता हूं, तो वे अगली बार –

+1

प्रस्तुत नहीं करते हैं "अगली बार दौर" से आपका क्या मतलब है? फ्लैश संदेश आम तौर पर बाद के अनुरोधों पर प्रस्तुत नहीं करते हैं, यह उनकी प्रकृति है। – Ritchie

+0

रेल 4.1 के रूप में यह काम नहीं करेगा। – 0112

0

आप कर सकते हैं। आप अपने नियंत्रक में कुछ हेल्पर भी जोड़ सकते हैं।

या आप इसे i18n सिस्टम द्वारा कर सकते हैं।

11

फ्लैश ऑब्जेक्ट दृश्य खंड/संदेशों को संग्रहीत करने के लिए धारक है और सत्र का उपयोग करके उन्हें एक पुनर्निर्देशन के लिए जारी रखता है। मुझे एक लिंक संग्रहीत करने में कोई समस्या नहीं है, या एक यूआरएल बेहतर है।

उदाहरण:

redirect_to posts_path, :alert => "You cannot do that", :flash => { :url => post_path(@post) } 

और लेआउट दृश्य में, हमेशा की तरह संदिग्ध:

- if flash[:alert] 
    ... 
    - if flash[:url] 
    = link_to "blah blah", flash[:url] 
संबंधित मुद्दे