2012-02-22 10 views
7

रेल से 3.0 से 3.2 तक मेरे ऐप को माइग्रेट करने का प्रयास कर रहा है, और इसके हिस्से के रूप में मैं डेविस मणि को भी अपडेट कर रहा हूं। यह पता चला कि नए देव को नए OmniAuth मणि की आवश्यकता है। मेरे पास फेसबुक प्रमाणीकरण OmniAuth के साथ कॉन्फ़िगर किया गया है। माइग्रेशन गाइड पढ़ने के बाद मैंने omniauth-facebook मणि भी जोड़ा है और इसे devise.rb में कॉन्फ़िगर किया है।OmniAuth 1.0 पर माइग्रेट करना: अपरिभाषित विधि `user_omniauth_authorize_path '

ActionView::Template::Error (undefined method `user_omniauth_authorize_path' for #<#:0x00000003b01e88>)

मैं फेसबुक प्रवेश बटन के लिए इस पथ का उपयोग किया गया था:

अब मैं इस त्रुटि मिल रही है। अब मुझे क्या उपयोग करना चाहिए?

# Include default devise modules. Others available are: 
    # :token_authenticatable, :confirmable, :lockable and :timeoutable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, 
     :omniauthable 

पूर्ण सर्वर लॉग:

Started GET "/" for 127.0.0.1 at 2012-02-22 10:39:27 +0200 
Processing by PagesController#guardian as HTML 
[paperclip] Duplicate URL for photo with /system/:attachment/:id/:style/:filename. This will clash with attachment defined in Asset class 
    Rendered pages/guardian.html.erb within layouts/application (955.6ms) 
Completed 500 Internal Server Error in 1245ms 

ActionView::Template::Error (undefined method `user_omniauth_authorize_path' for #<#<Class:0x00000003b213f0>:0x00000003b01e88>): 
    30:  </p> 
    31:    </td> 
    32:    <td> 
    33:    <%= link_to "Login with Facebook", user_omniauth_authorize_path(:facebook), :class => "login_with_facebook_button" %> 
    34:    </td> 
    35:   </tr> 
    36:  </table> 
     app/views/pages/guardian.html.erb:33:in `_app_views_pages_guardian_html_erb___1979224720320394612_27892940' 

अद्यतन: ठीक है, मैं इस पथ समस्या का समाधान हो पाने के लिए प्रबंधित

उपयोगकर्ता मॉडल इस (user.rb) शामिल हैं। अब फेसबुक लॉगिन बटन पर क्लिक करते समय, मुझे यह मिल रहा है:

Started GET "https://stackoverflow.com/users/auth/facebook" for 127.0.0.1 at 2012-02-23 16:02:01 +0200 

NoMethodError (undefined method `include?' for nil:NilClass): 
    omniauth (1.0.2) lib/omniauth/strategy.rb:165:in `call!' 
    omniauth (1.0.2) lib/omniauth/strategy.rb:148:in `call' 
    warden (1.1.1) lib/warden/manager.rb:35:in `block in call' 
    warden (1.1.1) lib/warden/manager.rb:34:in `catch' 
    warden (1.1.1) lib/warden/manager.rb:34:in `call' 

यह सब थोड़ा उलझन में है। मैंने निर्दिष्ट करने के बाद पथ समस्या हल की: फेसबुक ट्यूटोरियल इस ट्यूटोरियल में accodring: https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview। अब मैंने यह भी देखा है कि मैं omniauth.rb को कॉन्फ़िगर/प्रारंभकर्ता फ़ोल्डर से याद कर रहा हूं, जिसका उल्लेख omniauth-facebook विकी में किया गया है। मैं निम्नलिखित सामग्री के साथ omniauth.rb बना लिया है, लेकिन अभी भी एक ही समस्या हो रही है:

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, ENV['APP_ID'], ENV['APP_SECRET'] 
    end 
+0

आप पूरा स्टैकट्रेस Pase कर सकते हैं कर रहे हैं? – shingara

+0

जोड़ा गया सर्वर लॉग –

+0

क्या आपने अपने उपयोगकर्ता मॉडल में सर्वव्यापी जोड़ा है? – shingara

उत्तर

5

मैं फिर जनरेटर वसीयत चलाकर इस समस्या का समाधान। दो फाइलें जिन्हें सत्यापित करने की आवश्यकता होगी: कॉन्फ़िगर/रूट.आरबी और मॉडल/user.rb

मार्ग.आरबी फ़ाइल में, शीर्ष पर एक डुप्लिकेट 'devise_for' होगा और user.rb डिफ़ॉल्ट डिवाइसेज मॉड्यूल होगा, इसलिए 'omniauthable' को यहां जोड़ा जाना होगा।

+0

धन्यवाद, यह कोशिश करेंगे! –

+0

क्या आपका मतलब ये जनरेटर है? '> रेल मॉडल मॉडल उत्पन्न करते हैं user_id: पूर्णांक प्रदाता: स्ट्रिंग uid: स्ट्रिंग uname: स्ट्रिंग uemail: स्ट्रिंग > रेल नियंत्रक सेवाएं ' –

+0

उत्पन्न करती है मुझे अभी भी वही समस्याएं मिल रही हैं। रनिंग राक मार्ग भी इस पथ की सूची नहीं है। मुझे आश्चर्य है कि यह पथ मूल रूप से निर्दिष्ट किया गया था। –

4

प्लेस वसीयत: उपयोगकर्ता पर omniauthable model.Currently मेरी संस्करणों वसीयत 2.0.4, omniauth 1.1.0 & omniauth-फेसबुक 1.2.0

+0

सही ... आपने मेरा दिन बचाया .. धन्यवाद – Dave

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