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
21 22 23 24 25 26 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 21 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)
29 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 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 29 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 end end |
#index ⇒ Object
list existing answer sheets
13 14 15 16 17 18 19 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 13 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
68 69 70 71 72 73 74 75 76 77 78 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 68 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)
59 60 61 62 63 64 65 66 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 59 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
80 81 82 83 84 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 80 def submit return false unless validate_sheet flash[:notice] = "Your form has been submitted. Thanks!" redirect_to root_path end |