Module: Rooftop::Rails::Extras::ContactFormHandler
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/controllers/concerns/rooftop/rails/extras/contact_form_handler.rb
Overview
A controller mixin to handle contact forms easily. If you don’t use Page as your page class, you need to specify it. You also need to specify the contact form class you’re using (which needs to inherit from Rooftop::Rails::Extras::ContactForm)
Instance Method Summary collapse
Instance Method Details
#create ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'app/controllers/concerns/rooftop/rails/extras/contact_form_handler.rb', line 27 def create raise ArgumentError, "You need to call contact_form=(YourClass) in your controller, which must inherit from Rooftop::Rails::Extras::ContactForm" unless self.class.contact_form.ancestors.include?(Rooftop::Rails::Extras::ContactForm) raise ArgumentError, "You need to include hidden fields for from_page and to_page IDs, so this controller can redirect appropriately" unless params.has_key?(:from_page) && params.has_key?(:to_page) form = self.class.contact_form.new(contact_form_params) from_page, to_page = *self.class.page_class.where(post__in: [params[:from_page], params[:to_page]], orderby: :post__in) if form.deliver redirect_to Rooftop::Rails::RouteResolver.new(:page, to_page.nested_path).resolve else redirect_to Rooftop::Rails::RouteResolver.new(:page, from_page.nested_path).resolve(contact_form_params.merge(errors: form.errors.keys)), notice: form.errors..to_sentence end end |