Enquiry Form
Controller
View
Models
tableless.rb
mailer_online_enquiry.rb
def online_enquiry set_site_settings(:online_enquiry) @mailer = MailerOnlineEnquiry.new(params[:mailer]) if request.post? and @mailer.save and params[:enquiry_cap].blank? begin Mailer::deliver_online_enquiry( :to=>"#{@setting[:site].site_title} <#{MAILER_RECIPIENTS[:default]}>", :subject=>"Website Online Enquiry", :mailer=>@mailer ) @mailer = MailerOnlineEnquiry.new #complete flash[:app_success] = "Your enquiry was successfully delivered" redirect_to mailer_complete_path(:mailer_reference=>"online-enquiry") rescue flash.now[:app_error] = "Oops... Something went wrong" end end end
View
<% unless @mailer.errors.empty? %> <p class="flash app_error"><%= pluralize @mailer.errors.count, "error" %> prohibited your Enquiry from being submitted</p> <% end %> <% form_for :mailer, :url=>request.env["REQUEST_URI"], :html=>{:multipart=>true}, :builder=>NetAgeLabeledFormBuilder do |f| %> <fieldset> <div class="block"> <dl> <%= f.text_field :name, :required=>true, :class=>"medium" %> </dl> <div class="cap-field"> <%= text_field_tag :enquiry_cap, params[:enquiry_cap] %> </div> <div class="action"> <%= content_tag :button, "Submit", {:name=>"commit", :type=>"submit", :class=>"button-submit"} %> </div> </div> </fieldset> <% end %>
Models
tableless.rb
class Tableless < ActiveRecord::Base def self.columns() @columns ||= []; end def self.column(name, sql_type=nil, default=nil, null=true) columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type.to_s, null) end def save(validate=true) validate ? valid? : true end end
mailer_online_enquiry.rb
class MailerOnlineEnquiry < Tableless column :name, :string column :contact_number, :string column :email_address, :string column :comments, :string validates_presence_of :name, :contact_number validates_format_of :email_address, :with=>/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/ end