Рельсы 3: ActionMailer

Я слежу за этой Railscast для отправки писем с моих рельсов приложение.

Сначала я пытался настроить перехватчик почты, как в учебнике, но я отказался от этого, потому что у меня всегда был прекрасный can't convert nil into Hash (TypeError).

Теперь, когда я пропустил перехватчик, я хотел отправить письмо, но знаете что — мой старый друг вернулся:

can't convert nil into Hash (TypeError)

app/mailers/user_mailer.rb:20:in `registration'

Вот класс почтовой программы (строка № 20 — та, что вызывает mail):

class UserMailer < ActionMailer::Base

  def registration( user )
    @invited = user

    subject = 'Welcome!'

    if Rails.env.development?
      to = '[email protected]'
      subject = "to #{@invited.email}: #{subject}"
    else
      to = @invited.email   
    end

    logger.info "Sending email to #{to} with subject #{subject}"

    mail( :from => '[email protected]', :to => to, :subject => subject )
  end
end

Журнал показывает:

invite entered for user [email protected]
Sending email to [email protected]
Sending email to [email protected] with subject to [email protected]: Welcome!

А вот и запрашиваемый файл представления (registration.text.erb):

Welcome!

blablah blah click the following link to activate blah blah <%= activate_user_path( @invited )%> blah blah.
blah blah this is actually german (but plaintext) encoded in utf-8. 

Viel Vergnügen beim Verwenden des Systems!

спасибо за любую помощь


person DeX3    schedule 22.03.2011    source источник
comment
и я думаю, что ваш user это nil   -  person fl00r    schedule 22.03.2011
comment
# 20 - это тот, который вызывает почту (...)   -  person DeX3    schedule 22.03.2011
comment
нет, пользователь здесь не нулевой, журнал действительно отображает правильные данные.   -  person DeX3    schedule 22.03.2011
comment
как вы вызвали свой метод registration из контроллера?   -  person fl00r    schedule 22.03.2011
comment
Контроллер вызывает метод «invite()» для пользовательского объекта, который выполняет некоторые действия пользователя, а затем вызывает UserMailer.registration( self ).deliver.   -  person DeX3    schedule 22.03.2011
comment
И покажи свой файл VIEW (/app/views/user_mailers/registration.html.erb или text.erb)   -  person fl00r    schedule 22.03.2011
comment
все выглядит хорошо для вас. проверьте свою среду (rails и ее зависимости)   -  person fl00r    schedule 22.03.2011


Ответы (1)


сделал это, у меня была ошибка в конфигурации actionmailer

person DeX3    schedule 11.05.2011
comment
Меня некоторое время мучает одна и та же ошибка. Если вы помните, можете ли вы упомянуть, что было ошибкой для вас? - person rohitmishra; 19.12.2012