2017-05-11 16 views
1

私はこのエラーをかなり頻繁に受けています。私のアプリケーションコントローラでは、彼が彼のアカウント(Devise)でサインインした後に、ユーザをリダイレクトする方法after_sign_in_path_forがあります。ここで

は、行がエラーの原因となっている。Rails:nilの有効なマッピングが見つかりませんでした

request.env['omniauth.origin'] || stored_location_for(resource) || root_url 

前の2つのオプションが動作しない場合にだけバックroot_urlに落ちないでしょうか?


Google(Omniauth)でログインした後、この現象が発生しました。

答えて

2

stored_location_for(resource)のソースコードを見ると、最終的にはこの魔法が呼び出されます。それがnilだ場合、それはあなたが遭遇したエラーを発生させ、それが戻ってroot_path

def self.find_scope!(obj) 
    obj = obj.devise_scope if obj.respond_to?(:devise_scope) 
    case obj 
    when String, Symbol 
    return obj.to_sym 
    when Class 
    Devise.mappings.each_value { |m| return m.name if obj <= m.to } 
    else 
    Devise.mappings.each_value { |m| return m.name if obj.is_a?(m.to) } 
    end 

    raise "Could not find a valid mapping for #{obj.inspect}" 
end 

https://github.com/plataformatec/devise/blob/master/lib/devise/mapping.rb

に落ちることはありませんので、ここで objは、 resourceです
関連する問題