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 |
# 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 @elements = @presenter.questions_for_page(:first).elements @page = @presenter.pages.first 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
54 55 56 57 58 59 60 61 62 63 64 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 54 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)
45 46 47 48 49 50 51 52 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 45 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
66 67 68 69 70 |
# File 'app/controllers/concerns/fe/answer_sheets_controller_concern.rb', line 66 def submit return false unless validate_sheet flash[:notice] = "Your form has been submitted. Thanks!" redirect_to root_path end |