Ссылка на сброс пароля не отправляется по электронной почте, отправленной почтовой программой rails action

я пытаюсь отправить ссылку для восстановления пароля на электронную почту пользователя, когда он нажимает на забыл пароль и вводит свой идентификатор электронной почты.

Это метод рассылки действий, который я использую

class Notifier < ActionMailer::Base

default from: "myemailid"
def deliver_password_reset_instructions(user)
email = "myemailid"
subject=       "Password Reset Instructions"     
sent_on  =     Time.now  
body={:edit_password_reset_url=>edit_password_reset_url(user.perishable_token)}
mail(:to=>email,:subject=>subject)


end

end

А вот вид внутри уведомителя

A request to reset your password has been made. If you did not make this request,
simply    ignore this email. If you did make this request just click the link below:

<%= @edit_password_reset_url %>

 If the above URL does not work try copying and pasting it into your browser. 
 If you continue to have problem please feel free to contact us.


 Everything else is getting sent but the link is not sent.

  I cant seem to find out the problem so pls if any one knows how to solve this issue,pls     help.

person Your Friend    schedule 19.01.2014    source источник


Ответы (1)


Вы должны использовать помощники URL в своем представлении электронной почты:

A request to reset  your password ...

<%= edit_password_reset_url(@user.perishable_token) %>

If the above url doesn't work ...

Вам просто нужно установить переменные экземпляра в методе уведомления для @user:

class Notifier < ActionMailer::Base
  def deliver_password_reset_instructions(user)
    @user = user
    mail(:to => @user.email, :subject => 'Password Reset Instructions')
  end
end

Вы заметите, что нет необходимости устанавливать время send_on. Представление имеет доступ к любым переменным экземпляра, установленным в методе действия, поэтому достаточно установить @user. Нет необходимости в вашей линии body.

person Jon    schedule 19.01.2014
comment
я изменил свой код и удалил тело и сделал edit_password_reset_url переменной экземпляра, и, похоже, теперь он работает. Спасибо и за ваш ответ. - person Your Friend; 19.01.2014