Rails 3: контактная форма для отправки сообщений из профилей пользователей - PullRequest
1 голос
/ 06 января 2012

Я работал над некоторыми основными учебными пособиями по Rails 3. Цель - создать сайт сообщества о способностях и действиях. Я использую Devise для аутентификации. Создание профилей пользователей с аватарами работало хорошо (благодаря скрепке).

В качестве следующего шага я хочу разрешить зарегистрированным пользователям отправлять электронную почту пользователю со страницы его (или ее) профиля . Я нашел отличный учебник по созданию контактной формы с помощью Служб Google: http://matharvard.ca/posts/2011/aug/22/contact-form-in-rails-3/

Класс почтовой программы в этом уроке выглядит следующим образом:

class NotificationsMailer < ActionMailer::Base

  default :from => "noreply@youdomain.dev"
  default :to => "you@youremail.dev"

  def new_message(message)
    @message = message
    mail(:subject => "[YourWebsite.tld] #{message.subject}")
  end

end

Мой вопрос: как лучше заменить you@youremail.dev адресом электронной почты получателя? (из пользовательской модели)

Заранее спасибо!

1 Ответ

1 голос
/ 06 января 2012

Вы можете изменить new_message, чтобы принять пользователя (или список пользователей), которому вы хотите отправить электронное письмо. Или массив адресов электронной почты, если хотите. Затем передайте адрес электронной почты получателя методу mail в качестве опции :to.

def new_message(receiver, message)
  @message = message
  mail(:subject => "[YourWebsite.tld] #{message.subject}",
       :to => receiver.email_address) # or something similar
end

Тогда вы можете вызвать свою почтовую программу вот так

NotificationEmail.new_message(a_user, a_message).deliver

Чтобы прочитать API, см. здесь или здесь (я предпочитаю APIdock).

Также доступно более полное руководство по ActionMailer здесь . Если вы новичок в Rails, вы можете найти больше руководств здесь .

...