Ich erhalte die folgenden Fehler in meiner Rails-Anwendung, und ich habe keine Ahnung, wie zu dem Debuggen gehen oder es zu reparieren:OmniAuth/Rails - Sie haben ein Null-Objekt, wenn Sie es nicht erwarten
NoMethodError in AuthenticationsController # create
Sie haben ein Null-Objekt, wenn Sie nicht erwarten es! Sie haben möglicherweise eine Instanz von ActiveRecord :: Base erwartet. Der Fehler trat bei null Auswertung []
Rails.root. /Users/phil/Sites/travlrapp.com Anwendung Trace | Rahmenverfolgung | Voll Trace
app/controllers/authentications_controller.rb: 15: in `erstellen‘
Der Controller ist dies:
class AuthenticationsController < ApplicationController
def index
@authentications = current_user.authentications if current_user
end
def create
omniauth = request.env["omniauth.auth"]
unless omniauth
redirect_to authentications_url
flash[:notice] = "Could not authenticate via #{params['provider']}."
end
authentication = Authentication.find_by_provider_and_uid(omniauth['provider'], omniauth['uid'])
if authentication
flash[:notice] = "Signed in successfully."
sign_in_and_redirect(:user, authentication.user)
elsif current_user
current_user.authentications.create!(:provider => omniauth['provider'], :uid => omniauth['uid'], :token => omniauth['credentials']['token'], :secret => omniauth['credentials']['secret'])
flash[:notice] = "Authentication successful."
redirect_to authentications_url
else
user = User.new
user.apply_omniauth(omniauth)
if user.save
flash[:notice] = "Signed in successfully."
sign_in_and_redirect(:user, user)
else
session[:omniauth] = omniauth.except('extra')
redirect_to new_user_registration_url
end
end
end
def destroy
@authentication = current_user.authentications.find(params[:id])
@authentication.destroy
flash[:notice] = "Successfully destroyed authentication."
redirect_to authentications_url
end
end
OmniAuth verwendet funktionieren, dann püriert ich es up versucht, zu einer Gabel von Pchilton, die flickr unterstützt auszutauschen. Ich habe dies getan, indem ich: git => in der gemfile und versuche, neu zu installieren, aber ich bin nicht zuversichtlich, dass ich es jemals richtig gemacht habe.
Ich habe jetzt alle omniauth und oa-foo gem Dateien manuell entfernt und zuerst die aktuelle stable (0.1.6) und die Git Master Kopie installiert, aber alle Fehler sind gleich.
Wirklich ratlos hier, niemand, den ich kenne, hat eine Ahnung, was das Problem ist.
Hey, danke für die Antwort. Ja, die Routen sind vorhanden: http://d.pr/SoEj –