Module: Fe::AnswerSheetsControllerConcern
- Extended by:
- ActiveSupport::Concern
- Included in:
- AnswerSheetsController
- Defined in:
- app/controllers/concerns/fe/answer_sheets_controller_concern.rb
Instance Method Summary collapse
- #create ⇒ Object
-
#edit ⇒ Object
display answer sheet for data capture (page 1).
-
#index ⇒ Object
list existing answer sheets.
- #send_reference_invite(reference = nil) ⇒ Object
-
#show ⇒ Object
display captured answers (read-only).
- #submit ⇒ Object
Instance Method Details
#create ⇒ Object
22 23 24 25 26 27 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 22 def create @question_sheet = Fe::QuestionSheet.find(params[:question_sheet_id]) @answer_sheet = @question_sheet.answer_sheets.create redirect_to edit_fe_answer_sheet_path(@answer_sheet) end |
#edit ⇒ Object
display answer sheet for data capture (page 1)
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 30 def edit @presenter = Fe::AnswerPagesPresenter.new(self, @answer_sheet, params[:a]) unless @presenter.active_answer_sheet.pages.present? flash[:error] = "Sorry, there are no questions for this form yet." if request.env["HTTP_REFERER"] redirect_back(fallback_location: '/') else render html: "", layout: true end else if get_filter.present? # filter presenter entire page list all_question_set = @presenter.questions_for_all_pages all_question_set.set_filter(get_filter) @presenter.filter_pages_from_elements(all_question_set.elements) # get first page elements question_set = @presenter.questions_for_page(:first) question_set.set_filter(get_filter) @elements = question_set.elements @page = @presenter.pages.first else # save some processing by not doing any filtering code @elements = @presenter.questions_for_page(:first).elements @page = @presenter.pages.first end @answers_digest = @answer_sheet.answers_digest(@page) if @page end end |
#index ⇒ Object
list existing answer sheets
14 15 16 17 18 19 20 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 14 def index @answer_sheets = answer_sheet_type.order('created_at') # drop down of sheets to capture data for @question_sheets = Fe::QuestionSheet.order('label').collect {|s| [s.label, s.id]} end |
#send_reference_invite(reference = nil) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 70 def send_reference_invite(reference = nil) @reference = reference || @answer_sheet.reference_sheets.find(params[:reference_id]) if params[:reference] reference_params = params.fetch(:reference)[@reference.id.to_s].permit(:relationship, :title, :first_name, :last_name, :phone, :email, :is_staff) @reference.update(reference_params) end if @reference.valid? @reference.send_invite(request.host) end end |
#show ⇒ Object
display captured answers (read-only)
61 62 63 64 65 66 67 68 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 61 def show @question_sheet = @answer_sheet.question_sheet pf = Fe.table_name_prefix @elements = @question_sheet.pages.collect {|p| p.elements.includes(:pages).order("#{pf}pages.number,#{pf}page_elements.position").all}.flatten questions = Fe::QuestionSet.new(@elements, @answer_sheet) questions.set_filter(get_filter) @elements = questions.elements.group_by{ |e| e.pages.find_by(id: @question_sheet.page_ids) } end |
#submit ⇒ Object
82 83 84 85 86 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 82 def submit return false unless validate_sheet flash[:notice] = "Your form has been submitted. Thanks!" redirect_to root_path end |