The_Fritz
The_Fritz

Reputation: 452

Rails 3: Contact form to send messages from User Profiles

I worked through some basic tutorials on Rails 3. The goal is a community-website on abilities and activities. I am using Devise for authentication. The creation of user profiles with avatars worked well (thanks to paperclip).

As a next step, I want to enable registered users to send an e-mail to a user from his (or her) profile page. I found a great tutorial on creating a contact form using Google Apps: http://matharvard.ca/posts/2011/aug/22/contact-form-in-rails-3/

The mailer class in this tutorial looks like:

class NotificationsMailer < ActionMailer::Base

  default :from => "[email protected]"
  default :to => "[email protected]"

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

end

My question: What is the best way to replace [email protected] with the receivers E-Mail-Address? (from the User-Model)

Thanks in advance!

Upvotes: 1

Views: 650

Answers (1)

Behrang Saeedzadeh
Behrang Saeedzadeh

Reputation: 47933

You can modify the new_message to accept the user (or list of users) to whom you want to send the email. Or an array of email addresses if you want to. Then pass the receiver's email address to the mail method as the :to option.

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

Then you can invoke your mailer like this

NotificationEmail.new_message(a_user, a_message).deliver

To read the API see here or here (I prefer APIdock).

Also a more comprehensive guide on ActionMailer is available here. If you are new to Rails, you can find more guides here.

Upvotes: 1

Related Questions