2011-12-05 16 views
7

रेल 3.1 और डेविस 1.5 प्रश्न।रेल 3.1 डिवाइस फ्लैश संदेश सीएसएस को सफलतापूर्वक नोटिस से कैसे बदलें?

मैं अपने लेआउट में फ्लैश संदेशों को प्रदर्शित करने के लिए निम्न कोड का उपयोग कर रहा:

<% flash.each do |key, message| %> 
     <%= content_tag(:div, message, :class => "flash #{key}") %> 
    <% end %> 

मैं सफलता के लिए नोटिस से अपने पुष्टि संदेशों के कुछ के लिए सीएसएस वर्ग बदलना चाहते हैं, लेकिन मैं डॉन ' टी को ओवरराइड या बदलने के बारे में नहीं पता क्योंकि मुझे नहीं पता कि यह कहां सेट है।

क्या कोई मुझे सही दिशा में इंगित कर सकता है?

धन्यवाद!

+1

i18n सक्षम करके और डिफ़ॉल्ट लोकेल को संशोधित करके आप डिवीज फ्लैश संदेशों के टेक्स्ट को संपादित कर सकते हैं। लेकिन मुझे नहीं लगता कि अगर आप नोटिस या सफलता के रूप में जोड़े जाते हैं तो आप आसानी से बदल सकते हैं ... https://github.com/plataformatec/devise/blob/master/config/locales/en.yml। संदेशों में एचटीएमएल जोड़ने का एक बहुत गंदा तरीका होगा, और इसे अपने खाते में बदलने के लिए संशोधित करें ... – Robin

उत्तर

1

तो तरीका यह है वसीयत नियंत्रकों संपादित करने के लिए है।

जब आप सामान्य स्थापना के माध्यम से डेविस स्थापित करते हैं तो मुझे नहीं लगता कि यह नियंत्रक स्थापित करता है (कम से कम यह मेरे लिए नहीं था)। एक बार जब आप फ़ाइलें अपनी परियोजना में, https://github.com/plataformatec/devise/tree/master/app/controllers/devise

"sessions_controller.rb" फाइल करने के लिए जाना:

तो सबसे पहले आप मैन्युअल रूप से नियंत्रक फ़ाइलें जोड़ना चाहिए और उन्हें एक ही स्थान में अपनी परियोजना में डाल दिया।

set_flash_message :notice, :signed_in 

और

set_flash_message :notice, :signed_out 

तुम बस को बदलने की जरूरत: करने के लिए ": नोटिस" ": सफलता"

आशा

एक लाइनों 16 & 25, आप कोड दिखाई देना चाहिए यह काम करता है!

+0

मेरी परियोजना मैंने जो लाइनों को बदल दिया है, उस पर त्रुटि फेंकता है। क्या नियंत्रक फ़ोल्डर के तहत देवता नामक फ़ोल्डर में फ़ाइलों को रखने के अलावा आपको कुछ और करने की ज़रूरत है? – jmosesman

0

सीएसएस वर्ग :class तर्क द्वारा निर्धारित किया जा रहा है। notice (या success, आदि) के एक वर्ग को जोड़ने के लिए, बस नीचे दिए करने के लिए अपने कॉल बदलने के लिए:

<%= content_tag(:div, message, :class => "flash #{key} notice") %> 
+2

यह प्रत्येक फ़्लैश संदेश में एक नोटिस क्लास जोड़ देगा, जो वह नहीं चाहता है। – Robin

0

मैं इस समस्या में भाग गया क्योंकि मैं बूटस्ट्रैप-सास मणि का उपयोग कर रहा हूं जो फ़्लैश संदेशों के लिए एक पूरी तरह से अलग वर्ग संरचना का उपयोग करता है। मैंने इसे सुलझाने के बजाय गड़बड़ी के बजाय इसे सुलझाने का मार्ग लिया (सास विरासत अद्भुत है :)।

तो, मैं app/view/layouts/application.html.haml फ्लैश संदेशों प्रस्तुत करना:

%div.container 
    - flash.each do |key, value| 
    = content_tag(:div, value, class: "alert alert-dismisable alert-#{key}") 

और, मैं app/assets/stylesheets/custom.css.scss के लिए एक सरल नियम जोड़ने के काम कर वसीयत के फ्लैश संदेश प्राप्त करने के:

/* Style Devise Flash messages like Bootstrap */ 
.alert-alert { 
    @extend .alert-warning; 
} 

यह है कि! अब flash[:alert] बस बूटस्ट्रैप के flash[:warning] की तरह स्टाइल किया गया है।

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