Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RoR-设计可确认的电子邮件错误_Ruby On Rails_Ruby On Rails 3_Devise_Devise Confirmable - Fatal编程技术网

Ruby on rails RoR-设计可确认的电子邮件错误

Ruby on rails RoR-设计可确认的电子邮件错误,ruby-on-rails,ruby-on-rails-3,devise,devise-confirmable,Ruby On Rails,Ruby On Rails 3,Devise,Devise Confirmable,我将RubyonRails3与Desive一起使用,并发送确认电子邮件。电子邮件工作正常(就发送而言),但当我单击“确认我的帐户”链接时,它会生成一个错误。 有人能告诉我,或者至少能给我指出正确的方向,说明这是什么/如何解决这一问题吗 这是我在日志中看到的错误: Started GET "/users/confirmation?confirmation_token=qKvZWHgj6ncYAyuQq3e1" for 127.0.0.1 at 2012-08-15 20:57:11 +0300

我将RubyonRails3与Desive一起使用,并发送确认电子邮件。电子邮件工作正常(就发送而言),但当我单击“确认我的帐户”链接时,它会生成一个错误。
有人能告诉我,或者至少能给我指出正确的方向,说明这是什么/如何解决这一问题吗

这是我在日志中看到的错误:


Started GET "/users/confirmation?confirmation_token=qKvZWHgj6ncYAyuQq3e1" for 127.0.0.1 at 2012-08-15 20:57:11 +0300
Processing by ConfirmationsController#show as HTML
  Parameters: {"confirmation_token"=>"qKvZWHgj6ncYAyuQq3e1"}
  User Load (9.0ms)  SELECT "users".* FROM "users" WHERE "users"."confirmation_token" = 'qKvZWHgj6ncYAyuQq3e1' LIMIT 1
Completed 500 Internal Server Error in 35920ms

NoMethodError (undefined method `only_if_unconfirmed' for #):
  app/controllers/confirmations_controller.rb:58:in `with_unconfirmed_confirmable'
  app/controllers/confirmations_controller.rb:40:in `show'


  Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.5/lib/action_dispatch/middleware/templates/rescues/_trace.erb (8.0ms)
  Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.5/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (3.0ms)
  Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.5/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (4479.3ms)


我验证了url中的令牌与数据库中的该用户完全匹配。

可能您有一个真正最新版本的Deave,它改变了确认令牌的处理方式,因此如果您使用Deave生成视图,如下所示:

rails g devise:views
然后在app/views/devise/mailer/confirmation\u instructions.html.erb文件下,您可以看到如下内容:

....
<%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %>
....
。。。。
@资源确认(U令牌)%>
....
您应该将其更改为:

<%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @token) %>
@token)%>
如您所见,他们使用名为
@token
的实例变量,而不是
@resource.confirmation\u token


那就应该成功了

你有没有以任何方式定制设计?或者覆盖了任何控制器?是的。我知道这是我做的,但我不知道该往哪个方向看。更糟糕的情况是,我可以删除它并重新安装。