Sha256: 1881c2c8da8801b05cf9220e415fd67e4b8505a60e297292ed3e43e3c7bc8996

Contents?: true

Size: 1.38 KB

Versions: 2

Compression:

Stored size: 1.38 KB

Contents

class FormsController < ApplicationController

  no_login_required
  
  skip_before_filter :verify_authenticity_token

  def update
    @page = Page.find(params[:page_id]) rescue Page.first
    @page.data    = params 
    @page.request = OpenStruct.new({
      :session => session # Creating a pretend response object
    })
    
    @form = Form.find(params[:id])
    @form.page = @page
    
    # We need a response object
    @response = find_or_create_response
    # Put the submitted data into the response object
    @response.result = Forms::Config.deep_symbolize_keys(params)
    
    begin
      # Grab the form configuration data
      @form[:extensions] = Forms::Config.convert(@form.config)
    rescue
      raise "Form '#{@form.title}' has not been configured"
    end
    
    @results =  {}
    # Iterate through each configured extension
    @form[:extensions].each do |name, config|
      result = @form.call_extension(name,config)
      
      @results.merge!({ name.to_sym => result })
      session.merge!(result[:session]) if result[:session].present?
    end
    # Those results are merged into the response object
    @response.result = @response.result.merge!({ :results => @results})
    
    begin
      @response.save!
      redirect_to @form.redirect_to.present? ? @form.redirect_to : @page.url
    rescue
      "Form '#{@form.title}' could not be submitted."
    end
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
radiant-forms-extension-3.2.2 app/controllers/forms_controller.rb
radiant-forms-extension-3.2.1 app/controllers/forms_controller.rb