2

これまで経験したことはありませんが、Rails サイトを Heroku に移動してから、Devise をトリガーしてメールを送信しようとすると、次のメッセージが表示されます。

Started POST "/members/forgot-password" for 127.0.0.1 at 2013-02-24 00:02:27 +1100
Processing by Devise::PasswordsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"9G1P34ddbq2TN7SkmFuCet5d7fPMvWdSSpIaGqSZW9g=", "user"=>{"email"=>"paul.mcguane@*****"}, "commit"=>"Recover password"}
  User Load (3.1ms)  SELECT "users".* FROM "users" WHERE "users"."email" = 'paul.mcguane@me.com' LIMIT 1
Completed 500 Internal Server Error in 31ms

ArgumentError - wrong number of arguments (2 for 1):
  app/mailers/devise/mailer.rb:8:in `reset_password_instructions'

mailer.rb

    class Devise::Mailer < ::ActionMailer::Base
  include Devise::Mailers::Helpers

  def confirmation_instructions(record)
    devise_mail(record, :confirmation_instructions)
  end

  def reset_password_instructions(record)
    devise_mail(record, :reset_password_instructions)
  end

  def unlock_instructions(record)
    devise_mail(record, :unlock_instructions)
  end
end
4

4 に答える 4

2

これは、Devise が最近のバージョンで追加のオプション パラメータを導入したためです。次のようなものが欲しいと思います:

class Devise::Mailer < ::ActionMailer::Base
  include Devise::Mailers::Helpers

  def confirmation_instructions(record, opts={})
    devise_mail(record, :confirmation_instructions, opts={})
  end

  def reset_password_instructions(record)
    devise_mail(record, :reset_password_instructions, opts={})
  end

  def unlock_instructions(record)
    devise_mail(record, :unlock_instructions, opts={})
  end

  def headers_for(actions, opts={}
    # see http://stackoverflow.com/a/14698599/18706
  end

end
于 2013-03-29T03:58:37.277 に答える
-3

結局gemをアンインストールし、再インストールすると修正されたようです:S

于 2013-02-24T02:53:00.747 に答える