2011-09-18 8 views
7

私は/ users/sign_inをブラウズしていくつかのauthdataを入力してから、いくつかのエラーがあるとDeviseを使ってカスタムSessionsControllerを持っています。カスタムsign_inエラーを作成する

 
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" } 

何僕にできる?

マイ開発的環境は、Railsの3.1.0で、Rubyの1.9.2

+0

リソースはhttp://groups.google.com/group/plataformatec-devise/browse_thread/thread/f9718059bc3a05e8のようにnilだと思います。なぜあなたはコントローラのヘルパーメソッドにアクセスできないのですか? – e3matheus

答えて

1

工夫は、そのコントローラで使用するカスタムメソッドの束を持っています。

あなたは、メソッドを取得するためにスーパーを呼び出してみてください、または

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

しかし、私は、そのベースから物事を変え、全体工夫セッション#メソッドを作成するなどの推薦することができます。ユーザー

私はよくある間違いは、ユーザーを作成工場と言って、そして

レット試すことだと思います(::ユーザーを)何がしたいことは

sign_inある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

{create(:user)}

... current_userを文字列として使用してsign_inを呼び出します。

sign_in user

.. "serialize_in_session"という恐ろしいエラーが発生します。

関連する問題