मैं अपने आवेदन में डेविस को एकीकृत करने की कोशिश कर रहा हूं। मुझे पृष्ठ के शीर्ष पर लॉगिन फॉर्म लागू करने की आवश्यकता है (मैंने इस फ़ॉर्म को लेआउट पेज में कार्यान्वित किया है) और मैंने पंजीकरण फॉर्म लागू किया है जिसमें पंजीकरण फॉर्म शामिल है। लेकिन जब मैंने गलत पंजीकरण डेटा सबमिट करने का प्रयास किया तो यह दोनों रूपों के लिए सत्यापन त्रुटियों को दिखाता है।डेविस। पंजीकरण और लॉगिन उसी पृष्ठ पर
उत्तर
अधिक जानकारी के बिना, यह अनुमान लगाना मुश्किल है कि समस्या क्या है। मैं, वास्तव में सहायक (और तेजी से तो) होने के लिए विकी पृष्ठों मिल गया है, चाहे आप पहले हो सकता है उन पर देखा:
दो पृष्ठों कि अपनी आवश्यकताओं के लिए प्रासंगिक हो सकता है:
आशा है कि इससे मदद मिलती है!
- एफएफ
मुझे समस्या मिली यह डेविस पर निर्भर नहीं था। मैं प्रत्येक प्रपत्र के लिए ऑब्जेक्ट नाम बदलता हूं और यह सही तरीके से काम करता है। –
@VitalyAksionchyk क्या आप वर्णन कर सकते हैं कि आपने अधिक विस्तार से क्या किया? – flynfish
मेरे लिए, 'simple_form_for ("उपयोगकर्ता", ... से 'simple_form_for (" उपयोगकर्ता ", ...' में परिवर्तन – mirelon
आप पृष्ठ पर दो रूपों होना चाहिए - साइन अप करने के लिए एक और पंजीकरण के लिए एक। यदि आप एक ही फॉर्म और कई संभावित कार्रवाइयां चाहते हैं तो आपको क्लाइंट पक्ष को संभालने वाले कुछ बटनों की आवश्यकता होगी और उपयोगकर्ता या सत्र बनाने के आधार पर उपयुक्त मार्ग पर & विधि को बदल दें।
यदि आपको लगता है कि आपने यह पहले से ही किया है, तो समस्या लगभग निश्चित रूप से आपके कोड में निहित है। अगर आप इसे हमारे साथ साझा करना चाहते थे तो हम शायद कुछ ऐसा बता सकते हैं जिसे आप याद कर सकते हैं।
दोनों रूपों के लिए सत्यापन त्रुटियों को देखने की समस्या 2 चीजों से उत्पन्न होती है। सबसे पहले, फॉर्म बनाने के लिए एक सामान्य 'संसाधन' सहायक का उपयोग करें। यह उपयोगकर्ता ऑब्जेक्ट बनाता है, और उसी उपयोगकर्ता objet को साइन अप और साइन इन फॉर्म दोनों के लिए उपयोग किया जाता है। दूसरा, devise त्रुटियों को आम तौर पर 'devise_error_messages' का उपयोग करके प्रदर्शित किया जाता है! सहायक जो समान साझा संसाधन का उपयोग करता है।
साइन इन करने के लिए और उसी पृष्ठ पर साइन अप करने के लिए आपको प्रत्येक फॉर्म के लिए अलग-अलग उपयोगकर्ता ऑब्जेक्ट्स बनाने और त्रुटि संदेशों को प्रदर्शित करने का एक नया तरीका बनाने की आवश्यकता है।
सबसे पहले, आप अपने खुद के पंजीकरण नियंत्रक बनाने के लिए (एप्लिकेशन/नियंत्रक/उन में /) और अपने मार्गों फ़ाइल तदनुसार
devise_for :users, controllers: {
registrations: 'users/registrations'
}
इसके बाद आप करेंगे अद्यतन की आवश्यकता होगी
class Users::RegistrationsController < Devise::RegistrationsController
include DevisePermittedParameters
protected
def build_resource(hash=nil)
super
# Create an instance var to use just for the sign up form
@sign_up_user = self.resource
end
end
अपने स्वयं के त्रुटि संदेश और संसाधन सहायकों की आवश्यकता है। इसलिए जैसे
module DeviseSinglePageHelper
def devise_error_messages_for_same_page(given_resource)
return "" if given_resource.errors.empty?
messages = given_resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
sentence = I18n.t("errors.messages.not_saved",
count: given_resource.errors.count,
resource: given_resource.class.model_name.human.downcase)
html = <<-HTML
<div id="error_explanation">
<h2>#{sentence}</h2>
<ul>#{messages}</ul>
</div>
HTML
html.html_safe
end
def sign_up_user
@sign_up_user ||= User.new(username: 'su')
end
def sign_in_user
@sign_in_user ||= User.new(username: 'si')
end
end
अंत में, अपने विचारों में, अद्यतन अपने रूपों: devise_single_page_helper.rb की तरह एक नई सहायक बना सकते हैं और निम्नलिखित जोड़ें
-# The sign up form
= simple_form_for(sign_up_user, url: registration_path(resource_name)) do |f|
-#...
= devise_error_messages_for_same_page(sign_up_user)
-# The sign in form
= simple_form_for(sign_in_user, url: sessions_path(resource_name)) do |f|
#...
= devise_error_messages_for_same_page(sign_in_user)
यह सब एक साथ आप 2 अलग-अलग वस्तुओं देता है - 1 साइन अप के लिए और साइन इन के लिए 1। यह त्रुटि संदेश को दूसरे में दिखाए जाने से रोक देगा।कृपया ध्यान दें कि आपके साइन इन पेज पर दोनों फॉर्म डालने की अनुशंसा करें (और शायद डिफ़ॉल्ट साइन अप पेज साइन इन पेज पर रीडायरेक्ट हो) क्योंकि डिफ़ॉल्ट रूप से एक विफल साइन इन प्रयास साइन इन पेज पर रीडायरेक्ट करेगा।
- 1. वर्डप्रेस के लॉगिन/पंजीकरण पृष्ठ को एक कस्टम लॉगिन/पंजीकरण पृष्ठ पर रीडायरेक्ट करना
- 2. Django व्यवस्थापक लॉगिन पृष्ठ सही लॉगिन प्रमाण-पत्रों पर उसी पृष्ठ पर रीडायरेक्ट करता है
- 3. डेविस पंजीकरण पुष्टिकरण
- 4. Magento लॉगिन और पंजीकरण एक पेज
- 5. htaccess नियम आगे/लॉगिन/और/उसी पृष्ठ पर लॉगिन करने के लिए?
- 6. पंजीकरण और लॉगिन फॉर्म node.js और mongodb
- 7. उसी पृष्ठ पर पृष्ठ परिवर्तन बदलें
- 8. रेल देवता: मैं उसी पृष्ठ पर लॉगिन फ़ॉर्म और पुनर्प्राप्ति पासवर्ड कैसे रखूं?
- 9. पंजीकरण पृष्ठ पर रीडायरेक्ट करें यदि उपयोगकर्ता
- 10. Django - अजाक्स मोडल लॉगिन/पंजीकरण
- 11. डेविस
- 12. डेविस
- 13. वर्डप्रेस - वर्तमान पृष्ठ लॉगिन पृष्ठ
- 14. उसी पृष्ठ पर दो jQuery संस्करण
- 15. डिवीज और एसटीआई पंजीकरण पर बेस क्लास के रूप में लॉगिन कैसे करें
- 16. Symfony2 - बेनामी के लिए लॉगिन और पंजीकरण पृष्ठ के लिए एक्सेस केवल उपयोगकर्ता नहीं
- 17. डेविस
- 18. डेविस
- 19. उसी पृष्ठ पर दो बूटस्ट्रैप accordions
- 20. उसी पृष्ठ पर JQuery के एकाधिक संस्करण
- 21. डेविस
- 22. उसी पृष्ठ पर jQuery और जावास्क्रिप्ट कोड काम नहीं करता
- 23. PHP का उपयोग कर उसी पृष्ठ पर लॉगिन फ़ॉर्म त्रुटियों को कैसे वापस कर सकते हैं?
- 24. लॉगिन एक https पृष्ठ
- 25. जीडब्ल्यूटी आवेदन में उपयोगकर्ता पंजीकरण/लॉगिन प्रबंधन
- 26. डेविस
- 27. वसंत सुरक्षा लॉगिन पृष्ठ
- 28. डेविस
- 29. समग्र सी 1 - सदस्यता प्रदाता - सरल पंजीकरण और लॉगिन
- 30. पासपोर्ट: लॉगिन और खाता पंजीकरण के लिए अलग-अलग रीडायरेक्ट
क्या आप प्रासंगिक विचार/नियंत्रक कोड दिखा सकते हैं? इस मामले के बारे में –
[यहां मेरा जवाब देखें] (http://stackoverflow.com/a/17001874/1297435)। –