Select Page

Building a Contact Form Application with Ruby on Rails

by | Mar 2, 2023 | Applications | 0 comments

As a software developer, you may often need to build web applications that require a contact form to collect user inquiries or feedback. In this post, we’ll walk through the steps of building a contact form application using Ruby on Rails.

Step 1: Generate a new Rails application

First, we need to generate a new Rails application. Open your terminal and run the command:

$ rails new contact_form

Step 2: Create a controller and view for the contact form

Next, we’ll create a new controller and a view for the contact form. In the terminal, run the rails generator command to generate a new controller and view.

$ rails generate controller contact_form index

class ContactFormController < ApplicationController
  def index
    @contact =

<!-- app/views/contact_form/index.html.erb -->
<%= form_for @contact, url: contacts_path do |f| %>
    <%= f.label :name %><br>
    <%= f.text_field :name %>
    <%= f.label :email %><br>
    <%= f.email_field :email %>
    <%= f.label :message %><br>
    <%= f.text_area :message %>
    <%= f.submit 'Submit' %>
<% end %>

Step 3: Define the create action in the ContactController

We’ll define the create action in the ContactController to handle the form submission. This action will create a new Contact object with the form data, save it to the database, and send an email notification to the site owner using the ContactMailer.

class ContactsController < ApplicationController
  def create
    @contact =

      # send email notification to site owner
      redirect_to root_path, notice: 'Thank you for your message!'
      render :index


  def contact_params
    params.require(:contact).permit(:name, :email, :message)

Step 4: Define the ContactMailer

We’ll define the ContactMailer to send email notifications to the site owner. This mailer will use the ActionMailer framework provided by Rails to send emails.

class ContactMailer < ApplicationMailer
  def contact_email(contact)
    @contact = contact
    mail(to: '', subject: 'New contact message')

Step 5: Create a new mailer view

Create a new mailer view at app/views/contact_mailer/contact_email.html.erb to define the email template.

<!-- app/views/contact_mailer/contact_email.html.erb -->
<h1>New Contact Message</h1>
<p>Name: <%= %></p>
<p>Email: <%= %></p>
<p>Message: <%= @contact.message %></p>

Step 6: Update the routes

Finally, update the routes.rb file to define the routes for the contact form.

Rails.application.routes.draw do
  root 'contact_form#index'
  resources :contacts, only: [:create]

That’s it! With these steps, you can now build a contact form application using Ruby on Rails. This application can be customized to fit your specific needs by adding additional fields, validations

Kirk Makse

Author: Kirk Makse

Greetings, my name is Kirk. I’m the creator of Rails Zone and a passionate Ruby on Rails developer. During my free time, I develop helpful tools and tutorials that aid fellow Ruby on Rails developers in creating applications with improved efficiency and speed.