2015-07-25 1 views
0

после нескольких дополнений к моему коду (который фактически не касался какого-либо кода, который поднимает проблему сейчас), определенная часть моего процесса регистрации перестала работать.Неопределенный метод `send_activation_email '

Эта часть взята из учебника Майкла Хартла, и она отлично работала, но теперь возникает проблема, когда я пытаюсь зарегистрировать нового пользователя через обычную регистрационную форму (я добавил регистрацию через 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 проходит, и пользователь фактически создан, но я получаю ошибку Action Controller:

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 говорит мне, что пользователь был создан (и возникает ошибка в условной, если сохранение ...):

#<User id: 133, first_name: "Txe", last_name: "Pah", email: "[email protected]", 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> 

То, что я не get, почему send_activation_email не работает, как определено в модели пользователя.

Может ли кто-нибудь помочь мне или испытал ту же проблему?

ответ

0

У вас есть send_activation_mail в User модель не send_activation_email. Изменение его на

@user.send_activation_mail 

должно решить вашу проблему.

+1

Омг, большое спасибо Павану, теперь я действительно чувствую себя глупо. Я искал имена (при поиске ответов многие люди упускали из виду то же самое), но я не знаю, почему я действительно не видел, я думаю, слишком много времени, глядя на тот же код, и мой мозг заполняет пробелы для меня - спасибо снова ! –