在尝试自定义时设计用户邮件错误:未定义的局部变量或方法`controller&#39; for#<usermailer:0x007fac55fe3ba8> </usermailer:0x007fac55fe3ba8>

时间:2012-03-09 22:24:56

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

我正在尝试自定义我的设计用户电子邮件。

我做了以下事情:

的routes.rb

 devise_for :users, :controllers => { :registrations => "registrations", :sessions => "sessions", :confirmations => "confirmations", :passwords => "passwords", :omniauth_callbacks => "authentications" }

devise.rb

  config.mailer = "UserMailer"

类UserMailer&lt;的ActionMailer ::基

include Devise::Mailers::Helpers # Needed for Devise
default from: "default@mydomain.com"

  def confirmation_instructions(record)
    @resource = record
    mail( :from => "default@mydomain.com",
          :to => record.email,
          :subject => "XXXXXXXXX"
        )
  end

confirmation_instructions.html.erb

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

这会导致错误:

NameError in Registrations#create

Showing /Users/xxx/Sites/x/app/views/user_mailer/confirmation_instructions.html.erb where line #5 raised:

undefined local variable or method `controller' for #<UserMailer:0x007fac55fe3ba8>

知道这里有什么问题吗?

由于

1 个答案:

答案 0 :(得分:-1)

如果您正在使用:reconfirmable模块,那么它需要unconfirmed_email列。因此,您必须在数据库中添加该列(通过创建用于添加列的新迁移)

但是,如果您不打算使用模块:可恢复。使用以下命令禁用它(在intializers / devise.rb中): -

config.reconfirmable = false

因为它默认启用。