未定义的方法`send_activation_email'

时间:2015-07-25 04:21:56

标签: ruby-on-rails-4 railstutorial.org

在我的代码添加了一些内容之后(实际上没有触及任何提出问题的代码)我的注册过程的某个特定部分停止了工作。

这一部分来自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>

每当我注册一个新用户时,后续操作都会通过并且实际创建了用户,但是我收到了操作控制器错误:

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: "$2a$10$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: "$2a$10$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无法正常工作的原因。

有人可以帮助我或遇到同样的问题吗?

1 个答案:

答案 0 :(得分:0)

send_activation_mail模型中的User不是send_activation_email。将其更改为

@user.send_activation_mail

应该解决你的问题。