我将 Authlogic 与 Authlogic-openid 插件一起使用(我 gem 安装了 ruby-openid 和 script/plugin install git://github.com/rails/open_id_authentication.git)并得到两个错误。
首先在运行功能测试时,我得到一个未定义的方法 openid_identifier?运行 UsersControllerTest 时我的 new.html.erb 文件中的一行上的消息。该行是:
<% 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