未定义的方法`send_activation_email'
undefined method `send_activation_email'
在我的代码中添加了一些内容(实际上并没有触及现在引发问题的任何代码)之后,我的注册过程的特定部分停止工作了。
这部分来自 Michael Hartl 的教程,它运行良好,但现在每当我尝试通过普通注册表单注册新用户(我通过 FB G+ 和Linkedin,它们都有效)。
我在提交表单时得到一个未定义的方法`send_activation_email'。我有一段时间没有检查这个方法,因为我正在为社交媒体添加其他注册,但它们有自己的路径并通过会话控制器工作,而不是用户控制器,所以他们不应该真正造成问题。
在我的用户模型中我有:
def send_activation_mail
UserMailer.account_activation(self).deliver_now
end
然后在我的用户控制器中:
def create
@user = User.new(user_params)
if @user.save
@user.send_activation_email
flash[:info] = "Please check your email to activate your account."
redirect_to root_url
else
render 'new'
end
end
以及生成表单的视图:
<div class="row center">
<div class="col-md-4 center mg-top col-md-offset-4">
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :first_name %>
<%= f.text_field :first_name, class: 'form-control' %>
<%= f.label :last_name %>
<%= f.text_field :last_name, class: 'form-control' %>
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>
<%= f.label :password_confirmation, "Re-type your password" %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
<%= f.submit "Create an account", class: "btn btn-primary margin-25" %>
<% end %>
</div>
</div>
每当我注册一个新用户时,post 操作都会进行并且用户已实际创建,但我收到此操作控制器错误:
undefined method `send_activation_email' for #<User:0x007f90064bd5a0>
Extracted source (around line #19):
17
18
19
20
21
22
@user = User.new(user_params)
if @user.save
@user.send_activation_email
flash[:info] = "Please check your email to activate your account."
redirect_to root_url
else
ruby 控制台的读数告诉我用户已创建(并且在条件 if-save ... 中引发错误):
#<User id: 133, first_name: "Txe", last_name: "Pah", email: "teste@email.com", password_digest: "a$PLY4ZleCtUO0cLdRjIErBuF0j46YQBq1g3Krsf5T.i8...", created_at: "2015-07-25 03:41:49", updated_at: "2015-07-25 03:41:49", remember_digest: nil, admin: false, activation_digest: "a$voHnNYgzI2jazwRK3EiM6uKsel8Fieb.9HEVs29X8ml...", activated: false, activated_at: nil, reset_digest: nil, reset_sent_at: nil, link: nil, fb: false, fb_id: nil, fb_image: nil, gplus: false, gplus_id: nil, gplus_image: nil, lin: false, lin_id: nil, lin_image: nil, gender: "Unidentified", avatar: nil>
我不明白为什么 send_activation_email 没有像在用户模型中定义的那样工作。
有人可以帮助我或遇到过同样的问题吗?
您在 User
模型中有 send_activation_mail
而不是 send_activation_email
。将其更改为
@user.send_activation_mail
应该可以解决您的问题。
在我的代码中添加了一些内容(实际上并没有触及现在引发问题的任何代码)之后,我的注册过程的特定部分停止工作了。
这部分来自 Michael Hartl 的教程,它运行良好,但现在每当我尝试通过普通注册表单注册新用户(我通过 FB G+ 和Linkedin,它们都有效)。
我在提交表单时得到一个未定义的方法`send_activation_email'。我有一段时间没有检查这个方法,因为我正在为社交媒体添加其他注册,但它们有自己的路径并通过会话控制器工作,而不是用户控制器,所以他们不应该真正造成问题。
在我的用户模型中我有:
def send_activation_mail
UserMailer.account_activation(self).deliver_now
end
然后在我的用户控制器中:
def create
@user = User.new(user_params)
if @user.save
@user.send_activation_email
flash[:info] = "Please check your email to activate your account."
redirect_to root_url
else
render 'new'
end
end
以及生成表单的视图:
<div class="row center">
<div class="col-md-4 center mg-top col-md-offset-4">
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :first_name %>
<%= f.text_field :first_name, class: 'form-control' %>
<%= f.label :last_name %>
<%= f.text_field :last_name, class: 'form-control' %>
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>
<%= f.label :password_confirmation, "Re-type your password" %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
<%= f.submit "Create an account", class: "btn btn-primary margin-25" %>
<% end %>
</div>
</div>
每当我注册一个新用户时,post 操作都会进行并且用户已实际创建,但我收到此操作控制器错误:
undefined method `send_activation_email' for #<User:0x007f90064bd5a0>
Extracted source (around line #19):
17
18
19
20
21
22
@user = User.new(user_params)
if @user.save
@user.send_activation_email
flash[:info] = "Please check your email to activate your account."
redirect_to root_url
else
ruby 控制台的读数告诉我用户已创建(并且在条件 if-save ... 中引发错误):
#<User id: 133, first_name: "Txe", last_name: "Pah", email: "teste@email.com", password_digest: "a$PLY4ZleCtUO0cLdRjIErBuF0j46YQBq1g3Krsf5T.i8...", created_at: "2015-07-25 03:41:49", updated_at: "2015-07-25 03:41:49", remember_digest: nil, admin: false, activation_digest: "a$voHnNYgzI2jazwRK3EiM6uKsel8Fieb.9HEVs29X8ml...", activated: false, activated_at: nil, reset_digest: nil, reset_sent_at: nil, link: nil, fb: false, fb_id: nil, fb_image: nil, gplus: false, gplus_id: nil, gplus_image: nil, lin: false, lin_id: nil, lin_image: nil, gender: "Unidentified", avatar: nil>
我不明白为什么 send_activation_email 没有像在用户模型中定义的那样工作。
有人可以帮助我或遇到过同样的问题吗?
您在 User
模型中有 send_activation_mail
而不是 send_activation_email
。将其更改为
@user.send_activation_mail
应该可以解决您的问题。