0

Ruby on Rails 3 を Devise で使用し、確認メールを送信しています。メールは (送信に関しては) 正常に機能しますが、[アカウントの確認] リンクをクリックするとエラーが発生します。
誰かが光を当てることができますか、少なくともこれが何であるか/これを修正する方法について正しい方向に私を向けることができますか?

これは、ログに表示されるエラーです。


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 のトークンがデータベース内のこのユーザーと完全に一致することを確認しました。

4

1 に答える 1

0

おそらく、非常に最近のバージョンのdeviseを使用しており、確認トークンの処理方法が変更されているため、deviseで次のようにビューを生成すると:

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

それでうまくいくはずです!

于 2015-01-03T01:26:57.737 に答える