2011-09-18 9 views
7

मेरे पास डेविस का उपयोग करके एक कस्टम सत्र नियंत्रक है, जब मैं ब्राउज़/उपयोगकर्ता/साइन_इन ब्राउज़ करता हूं और कुछ ऑथडाटा दर्ज करता हूं तो सबमिट करें, कुछ त्रुटियां हैं।कस्टम साइन_इन त्रुटि

 
NoMethodError in Users::SessionsController#create 

undefined method `serialize_into_session' for Symbol:Class 
Rails.root: /home/kewang/rails/devisetest 

Application Trace | Framework Trace | Full Trace 
devise (1.4.5) lib/devise/rails/warden_compat.rb:19:in `serialize' 
warden (1.0.5) lib/warden/session_serializer.rb:25:in `store' 
warden (1.0.5) lib/warden/proxy.rb:161:in `set_user' 
devise (1.4.5) lib/devise/controllers/helpers.rb:111:in `sign_in' 
app/controllers/users/sessions_controller.rb:3:in `create' 

एप्लिकेशन/नियंत्रक/उपयोगकर्ताओं/sessions_controller.rb

class Users::SessionsController < Devise::SessionsController 
    def create 
    sign_in(resource_name, resource) 
    end 
end 

एप्लिकेशन/सहायकों/application_helper.rb

module ApplicationHelper 
    def resource_name 
    :user 
    end 

    def resource 
    @resource ||= User.new 
    end 

    def devise_mapping 
    @devise_mapping ||= Devise.mappings[:user] 
    end 
end 

config/routes.rb

devise_for :users, :controllers => { :sessions => "users/sessions" } 

क्या क्या मैं कर सकता हूँ?

मेरे विकास पर्यावरण रेल 3.1.0, रूबी 1.9.2

+0

मुझे लगता है कि संसाधन http://groups.google.com/group/plataformatec-devise/browse_thread/thread/f9718059bc3a05e8 में शून्य जैसा है। आप अपने नियंत्रक में सहायक तरीकों तक पहुंच क्यों कर रहे हैं? – e3matheus

उत्तर

1

वसीयत कस्टम तरीकों में से एक गुच्छा है कि वह अपने नियंत्रकों में उपयोग करता है।

आप सुपर बुला तरीकों प्राप्त करने की कोशिश कर सकता है, या

class Users::SessionsController < Devise::SessionsController 
    def create 
    sign_in(resource_name, resource) 
    super 
    end 
end 

लेकिन मैं सहित पूरे वसीयत सत्र # विधि बनाने के लिए, तो उस आधार से बातें बदलने की सलाह देते हैं। Link here

def create 
    self.resource = warden.authenticate!(auth_options) 
    set_flash_message(:notice, :signed_in) if is_navigational_format? 
    sign_in(resource_name, resource) 
    respond_with resource, :location => after_sign_in_path_for(resource) 
end 
0

क्या आप चाहते हैं

sign_in है: उपयोगकर्ता

मुझे लगता है कि आम गलती एक उपयोगकर्ता बनाने के लिए, एक फैक्टरी के साथ कहते हैं, और कोशिश

देना (: उपयोगकर्ता) {बनाएँ (: उपयोगकर्ता)}

... और फिर स्ट्रिंग के रूप में current_user के साथ sign_in को कॉल करें:

साइन_इन उपयोगकर्ता

.. जिसके परिणामस्वरूप डरावनी "serialize_in_session" त्रुटि होती है।

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