2011-10-30 21 views
5

डेविस मेरे ऐप में पूरी तरह से काम करता है सिवाय इसके कि devise.en.yml से फ़्लैश संदेश दृश्य में प्रदर्शित नहीं होते हैं। मैं क्या गलत कर रहा हूं?डेविस फ्लैश संदेश दिखाई नहीं दे रहे हैं

नीचे मेरा साइन अप पेज दृश्य है मैंने :alert और :notice दोनों को आजमाया है लेकिन काम नहीं कर रहा है।

अग्रिम धन्यवाद

<h2>Sign up</h2> 

<% if flash[:alert] %> 
    <%=flash[:alert]%> 
<%end%> 

<%= form_for(resource,:as=>resource_name,:url => registration_path(resource_name)) do |f| %> 
    <%= devise_error_messages! %> 
    <p><%= f.label :Username %></p> 
    <p><%= f.text_field :username %></p> 

    <p><%= f.label :email %></p> 
    <p><%= f.text_field :email %></p> 

    <p><%= f.label :password %></p> 
    <p><%= f.password_field :password %></p> 

    <p><%= f.label :password_confirmation %></p> 
    <p><%= f.password_field :password_confirmation %></p> 

    <p><%= f.submit "Sign up" %></p> 
<% end %> 

<%= render :partial => "devise/shared/links" %> 

उत्तर

6

आपको कोई फ़्लैश नहीं दिख रहा है क्योंकि फ्लैश किसी भी चीज़ पर सेट नहीं किया जा रहा है। ऐसा लगता है कि फ्लैश के उद्देश्य को गलत तरीके से परिभाषित करना।

फ्लैश का सामान्य व्यवहार वर्तमान अनुरोध में उपयोगकर्ता के वर्तमान सत्र में किसी मान पर सेट किया जाना है, फिर बाद के अनुरोध पर, फ़्लैश संदेश प्रदर्शित होता है। यह पैटर्न फ़्लैश को सेट करने के लिए क्रियाओं को अनुमति देता है, किसी अन्य पृष्ठ पर रीडायरेक्ट करता है, फिर उस पृष्ठ पर उस फ्लैश को प्रदर्शित किया जाता है जो पुनर्निर्देशन से लोड होता है। फ्लैश तब उपभोग किया जाता है और सत्र से निकाल दिया जाता है।

इसका अपवाद flash.now का उपयोग करना है जो बाद की कार्रवाई के बजाय फ्लैश को वर्तमान क्रिया से उपलब्ध कराता है।

आपके मामले में, फ्लैश प्रदर्शित नहीं हो रहा है क्योंकि प्रदर्शित करने के लिए कोई फ़्लैश नहीं है। साइनअप पेज लोड करना कोई फ़्लैश संदेश सेट नहीं करता है। फ्लैश के आपके दृश्य में एकमात्र तरीका होगा, अगर कुछ अन्य क्रियाएं इसके लिए रीडायरेक्ट होंगी, तो फ्लैश को ऐसा करने से पहले सेट करें। इस

redirect_to new_user_registrations_path, :notice => "This flash will show up on the sign up page" 

की तरह कुछ आम तौर पर आप एक विशेष दृश्य के भीतर फ्लैश कॉल करने के लिए नहीं करना चाहते हैं, बल्कि अपने आवेदन लेआउट में। यह फ्लैश को किसी भी क्रिया से सेट करने की अनुमति देता है जो एक पुनर्निर्देशन करता है और फ़्लैश जो भी बाद वाला पृष्ठ होता है उस पर दिखाई देगा। किसी विशिष्ट दृश्य से फ्लैश को सेट करने के लिए यह जानने की आवश्यकता होगी कि विशिष्ट दृश्य रीडायरेक्शन में उपयोग किया जाएगा। यह हमेशा मामला नहीं हो सकता है, flash.now एक अपवाद होगा क्योंकि यह पुनर्निर्देशन से काम नहीं करता है। अगर मुझे किसी विशिष्ट दृश्य में फ्लैश का उपयोग करने की आवश्यकता होती है, तो मैं पारंपरिक अलर्ट/नोटिस फ्लैश वर्र्स का उपयोग नहीं करता, क्योंकि मैं अपने एप्लिकेशन लेआउट में देखता हूं और मेरे फ्लैश को दो बार प्रस्तुत किया जाएगा। [: कस्टम] इसके बजाय मैं की तरह

class UsersController < ApplicationController 
    def custom_action 
    @user = User.find params[:id] 
    do_something_with @User 
    flash[:user] = "Custom action completed!" 
    redirect_to @user 
    end 
end 
तब मेरे उपयोगकर्ताओं/शो देखने के लिए मैं फ़्लैश लगेगा में

कुछ करने के लिए फ़्लैश सेट कर सकते हैं और है कि फ्लैश है कि मेरे लेआउट में फ्लैश से निपटने की तुलना में अलग नियंत्रित किया जाता है के साथ कुछ करना। मुझे वास्तव में ऐसा कुछ नहीं करना पड़ा, लेकिन अगर मुझे करना है, तो मैं इसे कैसे संभाला सकता हूं।

0

<% = प्रस्तुत करना: आंशिक => "साझा/flash_messages"%> या = प्रस्तुत करना 'साझा/flash_messages' त्रुटि संदेश देखने या वसीयत के लिए अपने दृश्य फ़ाइल में (अगर लोग Haml उपयोग कर रहे हैं): विफलता : संदेश

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

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