我将Authlogic与Authlogic-openid插件一起使用(我的宝石安装了ruby- openid和script / plugin安装git://github.com/rails/open_id_authentication.git) 并得到两个错误。
首先运行功能测试时,我得到一个未定义的方法 openid_identifier?我的new.html.erb文件中的一行上的消息 运行UsersControllerTest。该行是:
<% if @user.openid_identifier? %>
运行脚本/控制台时,我可以不使用任何方法访问此方法 问题。
第二,测试openid功能并注册新功能 用户使用openid并使用我的blogspot帐户进入我的应用程序 我在我的日志文件中得到以下内容:
Generated checkid_setup request to http://www.blogger.com/openid-server.g
with assocication ...
Redirected to http://www.blogger.com/openid-server.g?openid.assoc_handle=...
NoMethodError (You have a nil object when you didn't expect it!
The error occurred while evaluating nil.call):
app/controllers/users_controller.rb:44:in `create'
/usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
/usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
/usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
/usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
/usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
/usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
/usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
/usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
/usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
/usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
users_controller中的代码是直截了当的:
def create
respond_to do |format|
@user.save do |result|
if result
flash[:notice] = t('Thanks for signing up!')
format.html { redirect_to :action => 'index' }
format.xml { render :xml => @user, :status => :created, :location => @user }
else
format.html { render :action => "new" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
end
给出错误的行是@ user.save do | result | ...
我觉得我错过了一些非常基本但我一直在盯着的东西 这太久了,因为我找不到它是什么。我查了一下 Railscasts剧集160和170以及骨头GitHub项目的代码 但一无所获。
感谢您的帮助,usr
答案 0 :(得分:1)
问题在于同时使用了authlogic_oauth和authlogic_openid插件。这意味着用户的save方法将由oauth代码的openid代码处理。
也许authlogic_rpx库可以成功地组合这两种方法,我还需要对此进行测试。
答案 1 :(得分:0)
你确定@user已设置好吗?在我看来问题是@user是零。