【问题标题】:RoR - Devise Confirmable email errorRoR - 设计可确认的电子邮件错误
【发布时间】:2012-08-15 18:38:35
【问题描述】:

我正在使用带有 Devise 的 Ruby on Rails 3 并发送确认电子邮件。电子邮件可以正常工作(就发送而言),但是当我单击“确认我的帐户”链接时,它会生成错误。
任何人都可以解释一下,或者至少为我指出这是什么/如何解决这个问题的正确方向?

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


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 中的令牌与数据库中的该用户完全匹配。

【问题讨论】:

  • 您是否以任何方式定制了设计?或覆盖任何控制器?
  • 是的。我知道这是我所做的,但我想知道该往哪个方向看。更糟糕的是,我可以将其删除并重新安装。

标签: ruby-on-rails ruby-on-rails-3 devise devise-confirmable


【解决方案1】:

可能你有一个最新版本的设计,它改变了确认令牌的处理方式,所以如果你用这样的设计生成视图:

rails g devise:views

然后在 app/views/devise/mailer/confirmation_instructions.html.erb 文件下,您会看到如下内容:

....
<%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %>
....

您应该将其更改为:

<%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @token) %>

如您所见,他们使用名为 @token 的实例变量而不是 @resource.confirmation_token

这应该可以解决问题!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 2012-09-03
    相关资源
    最近更新 更多