# users_controller.rb
class UsersController < ApplicationController
before_action :set_user, only: [:show, :edit, :update, :destroy]
def index
@users = User.all
end
def show
end
def new
@user = User.new
end
def edit
end
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
# Tell the UserMailer to send a welcome email after save
UserMailer.with(user: @user).remind_email.deliver_later(wait_until: @user.date_and_time)
format.html { redirect_to root_path }
format.json { render :show, status: :created, location: @user }
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
def destroy
@user.destroy
respond_to do |format|
format.html { redirect_to users_url}
format.json { head :no_content }
end
end
private
def set_user
@user = User.find(params[:id])
end
def user_params
params.require(:user).permit(:name, :email, :note, :datetime)
end
end
------------------------------------------------------------------------------------------
#user_mailer.rb
class UserMailer < ApplicationMailer
def remind_email
@user = params[:user]
mail(to: @user.email, subject: "Sent from Mailme" )
end
end
------------------------------------------------------------------------------------------
#new.html.erb
<div class="container">
<div class="can_use">
<div class="row">
<div class="d-none d-sm-block col-sm-12 col-md-12 col-lg-12 col-xl-12">
<p class="text-center" style="font-size: 24px;"><span>Remind yourself</span> Remind your friend</p>
</div>
</div>
<div class="d-block d-sm-none col-xs-16">
<br>
<p class="text-center" style="font-size: 20px;"><span>Remind yourself</span> Remind your friend</p>
<br>
</div>
<%= form_for :user,url: users_path, :html => {:class => "form-horizontal center"} do |f| %>
<% if @user && @user.errors.any? %>
<p>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</p>
<% end %>
<div class="form-group">
<%= f.text_field :name, class: "form-control", placeholder: "Your name" %>
</div>
<div class="form-group">
<%= f.email_field :email, class: "form-control", placeholder: "Email of reciever" %>
</>
</div>
<div class="form-group">
<%= f.datetime_field :date_and_time, id: "datetimepicker", class: "form-control", placeholder: "Date and Time for remind" %>
</div>
<div class="form-group">
<%= f.text_area :note, class: "form-control", rows: "5" , placeholder: "Note" %>
</div>
<%= f.submit 'Remind Me', class: "btn btn-lg btn-primary btn-block" %>
<% end %>
</div>
</div>
------------------------------------------------------------------------------------------
#user_job.rb
class UserJob < ApplicationJob
queue_as :default
def perform(*args)
UserMailer.remind_email(user).deliver_later
end
end
------------------------------------------------------------------------------------------
#schema.rb
ActiveRecord::Schema.define(version: 2019_08_29_005204) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "guests", force: :cascade do |t|
t.text "guest_name"
t.text "guest_email"
t.text "guest_message"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "users", force: :cascade do |t|
t.text "name"
t.text "email"
t.text "note"
t.datetime "date_and_time"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end