Ruby on rails RoR-设计可确认的电子邮件错误
我将RubyonRails3与Desive一起使用,并发送确认电子邮件。电子邮件工作正常(就发送而言),但当我单击“确认我的帐户”链接时,它会生成一个错误。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
有人能告诉我,或者至少能给我指出正确的方向,说明这是什么/如何解决这一问题吗 这是我在日志中看到的错误:
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
那就应该成功了 你有没有以任何方式定制设计?或者覆盖了任何控制器?是的。我知道这是我做的,但我不知道该往哪个方向看。更糟糕的情况是,我可以删除它并重新安装。