You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Tree:
b06fd7c09b
1200-inputmode
2021-2022-json-updates
2308-migrated-locations-not-confirmed-automatically
AwsInsecure
AwsProdDeploy
AwsRunDbMigrations
CLDC-1049-autocomplete-improvements
CLDC-1183-assistive-tech
CLDC-1219-create-single-org-migration-task
CLDC-122-experimental-background-job-lettings-log-import-with-report
CLDC-1222-improve-case-log-import-performance
CLDC-1249-data-inputters-can-select-supported-housing-schemes
CLDC-1263-create-org-logs
CLDC-1324
CLDC-1324-remove-not-started
CLDC-1324-remove-not-started-status
CLDC-1324-remove-not-started-status-no-rebase
CLDC-1348-basic-validation-for-scheme-and-location-refactor
CLDC-1390-la-lookup-fallback-WIP
CLDC-1468-add-postcode-to-sales-property-info-journey
CLDC-1469-local-authority-question-sales
CLDC-1474-sales-setup-ownership-scheme
CLDC-1482-sales-log-buyer-company
CLDC-1528-person-1-relationship-to-buyer-1
CLDC-1530-working-situation
CLDC-1533-is-resale
CLDC-1537-details-for-person-1
CLDC-1586-spike
CLDC-1627-check-your-answers-page-changes
CLDC-1661-new-page-for-housing-providers
CLDC-1665-add-scheme-status
CLDC-1671-deactivate-scheme
CLDC-1672-reactivate-scheme
CLDC-1672-scheme-reactivation-review-app
CLDC-1730-stock-owning-validation2
CLDC-1741-scheme-attributes-bug-fix
CLDC-1750-po-fixes
CLDC-1787-bulk-upload-column-ordering
CLDC-1790-sales-validation-content-updates
CLDC-1820-allow-deactivation-or-reactivation-of-last-year-schemes-and-locations-in-crossover-period
CLDC-1864-question-numbering
CLDC-1864-question-numbering-too
CLDC-1880-mortgage-length-validations
CLDC-1917-allow-23-24-form
CLDC-1917-allow-23/24-form
CLDC-1963-fix-reset-password-bugs
CLDC-20-more-ac-fixes2
CLDC-20-more-ac-fixes3
CLDC-2019-UPRN-search
CLDC-2055-which-organisations-are-merging
CLDC-2068-request-and-validate-UPRN
CLDC-2105-merge-orgs-owning-org-dropdown
CLDC-2213-do-not-display-local-authority-question-if-inferred
CLDC-2227-move-uprn-questions
CLDC-2252-homepage-task-section
CLDC-2257-refactor-filters
CLDC-2322-read-and-sign-data-sharing-agreement
CLDC-2349-scientific-notation-uprn-error
CLDC-2390-town-not-given
CLDC-2412-data-privacy-bu
CLDC-2454-add-q90-based-on-q78
CLDC-2459-review-branch
CLDC-2460-review-app
CLDC-2491-Change-address-bug
CLDC-2492-create-rake-task-to-set-creation-method-for-existing-logs
CLDC-2505-bulk-upload-pages
CLDC-2545-add-q90-based-on-q78
CLDC-2585-mandatory
CLDC-2632.2-set-uprn-known-no
CLDC-2640-location-guidance
CLDC-2672-duplicate-logs-question-page-button
CLDC-2831-page-load
CLDC-2835-review-app-branch
CLDC-2896-pipes-in-bu
CLDC-2995-add-renttype-detail-column
CLDC-3014-schemes-locations-csv-download
CLDC-3025-leading-zeroes-in-old-visible-id-lookup-bug
CLDC-3091-asset-paths
CLDC-3132-24-25-reason-for-vacancy-update
CLDC-3147-update-pregnancy-for-24-25
CLDC-3152-update-ppostcode-hint-for-23-24
CLDC-3196-update-bu-resources-link
CLDC-3229-review-app-for-bu-testing
CLDC-3233-address-uprn-lookup-spike
CLDC-3292-staircase-validation
CLDC-3305-postcode-routing
CLDC-3339-update-selcet-correct-address-error
CLDC-3345-populate-assigned-to
CLDC-3345-rename-created-by-new
CLDC-3345-replace-created-by
CLDC-3345-save-created-by-values
CLDC-3345-test-branch
CLDC-3345-update-created-by-values
CLDC-3414-update-homepage
CLDC-3465-hard-validation-updates
CLDC-3465-update-setup-question-link
CLDC-3611-performance
CLDC-3611-performance-testing
CLDC-3740-Replace-you-didnt-answer-with-link
CLDC-3788-export-sales-logs
CLDC-3790-continued
CLDC-559-printed-form
CLDC-846-demographic-gender-validation
CLDC-858-no-of-beds-validation-sales
CLDC-858-update-sales-property-information
CLDC-858-validate-beds
CLDC-869-add-validations-for-initial-equity-for-shared-ownership
CLDC-898-monthly-charges-validation
CLDC-908-add-validation-mortgage-lender-name-provided-if-other
CLDC-933-update-household-income-questions
CLDC-allow-23-24-form-new
CLDc-3391-add-51-weeks-rent-period
CacheAssets
DO_NOT_MERGE
ForceAwsTaskFailure
MigrationEmailsFix
Prototyping
ReviewAppsAssets
active-admin-theme
after-demo
answer
before-demo
bu-sales-23-v3
bulk-upload-duplicates-bkup
bulk-upload-owning-org
bulk-upload-resume
bulk-upload-resume-v2
bulk-upload-sentence-case
cds-exports
chloe-1
chloe-2
chloe-3
chloe-4
chloe-5
cldc-1228-organisation-fixes-juris
cldc-1688-deactivation-affected-logs
cldc-1888-bulk-upload-duplicate-log-validation
cldc-2563-aws-production-pipeline-backup
cldc-2610-aws-migration-dry-run
cldc-2812-run-app-from-relative-url
cldc-2865-create-aws-only-pipeline
cldc-2865-enable-paas-maintenance-page
cldc-2865-remove-paas-from-prod-pipeline
cldc-875-sales-validations-shared-ownership-cash-deposit-amount
collection-resources-demo
cucumber-rails
data-export-jobs
deduplication-demo
demo-branch
demo-branch-0
demo-branch-08-01
demo-equations
demo-previous-period-edit-logs-closed
demo-previous-period-new-logs-closed
demo-previous-period-open
duplicate-bu-testing
duplicate-spike
empty
empty-pull-request
equation-before-demo
equation-demo-before
feature/CLDC-1057-ie-polyfills
fix-filter-service-bug
fix-order-export
fix-remove-attr-accessors-from-questions-in-cldc-1723
fix-test-dates
fix-test-on-main
flaky_tests_testing
full-import-optimisation
further-bulk-upload-year-fixes
homepage-not-in-crossover
jsbundling-with-webpack-modernizr
juris_katrina_test
key-issue
load-time-test
logs-status-on-log
main
merge-orgs-demo-2
merge-orgs-demo-branch
merge-test
more-bulk-upload-year
move-users-demo
new-core-ids
new-year-bulk-fixes
parallelize-tests
prod-pipeline-testing
quickfix/no_values_error
quickfix/providertype-mappings
quickfix/reasonpref-validation
remove-deprecated-config
revert-1378-CLDC-1917-startdate-validation
revert-2161-CLDC-3132-24-25-reason-for-vacancy-update
revert-2177-MoveInterviewQuestion
revert-CLDC-2310
revert-additional-export-fields
revert-s3-errors
review-app-deployment-test
review-app-for-23-24-mobbing
review-apps2
review-branch
rita-review
routes-to-csv
sales-collection-year-test-fixes
show-and-tell-28-3-24
show-and-tell-temp-branch
spike-a11y-testing-in-ci
test-6-months-ago
test-branch
test-branch-1
test-key-branch
test-merge-dpo-emails
test-review-app-access
testing-github-action-conditionals
update-rails-version
update-version-test
validations-copy
validations-spike
webinar-demo
v.0.3.25
v.0.3.26
v0.0.1
v0.0.2
v0.0.3
v0.0.4
v0.0.5
v0.0.6
v0.0.7
v0.0.8
v0.0.9
v0.1.0
v0.1.1
v0.1.10
v0.1.11
v0.1.12
v0.1.13
v0.1.14
v0.1.15
v0.1.16
v0.1.17
v0.1.18
v0.1.19
v0.1.2
v0.1.20
v0.1.21
v0.1.22
v0.1.23
v0.1.24
v0.1.25
v0.1.26
v0.1.27
v0.1.28
v0.1.29
v0.1.3
v0.1.30
v0.1.31
v0.1.4
v0.1.5
v0.1.6
v0.1.7
v0.1.8
v0.1.9
v0.2.0
v0.2.1
v0.2.10
v0.2.11
v0.2.12
v0.2.13
v0.2.14
v0.2.15
v0.2.16
v0.2.17
v0.2.18
v0.2.19
v0.2.2
v0.2.20
v0.2.21
v0.2.22
v0.2.23
v0.2.24
v0.2.25
v0.2.26
v0.2.27
v0.2.28
v0.2.29
v0.2.3
v0.2.30
v0.2.31
v0.2.32
v0.2.33
v0.2.34
v0.2.35
v0.2.36
v0.2.37
v0.2.38
v0.2.39
v0.2.4
v0.2.40
v0.2.5
v0.2.6
v0.2.7
v0.2.8
v0.2.9
v0.3.0
v0.3.1
v0.3.10
v0.3.11
v0.3.12
v0.3.13
v0.3.14
v0.3.15
v0.3.16
v0.3.17
v0.3.18
v0.3.19
v0.3.2
v0.3.20
v0.3.21
v0.3.22
v0.3.23
v0.3.24
v0.3.27
v0.3.28
v0.3.29
v0.3.3
v0.3.30
v0.3.31
v0.3.32
v0.3.33
v0.3.34
v0.3.35
v0.3.36
v0.3.37
v0.3.38
v0.3.39
v0.3.4
v0.3.40
v0.3.41
v0.3.42
v0.3.43
v0.3.44
v0.3.45
v0.3.46
v0.3.47
v0.3.48
v0.3.49
v0.3.5
v0.3.50
v0.3.51
v0.3.52
v0.3.53
v0.3.54
v0.3.55
v0.3.56
v0.3.57
v0.3.58
v0.3.59
v0.3.6
v0.3.60
v0.3.61
v0.3.62
v0.3.63
v0.3.64
v0.3.65
v0.3.66
v0.3.67
v0.3.68
v0.3.69
v0.3.7
v0.3.70
v0.3.71
v0.3.72
v0.3.73
v0.3.74
v0.3.75
v0.3.76
v0.3.77
v0.3.78
v0.3.79
v0.3.8
v0.3.80
v0.3.81
v0.3.82
v0.3.83
v0.3.84
v0.3.9
v0.4.0
v0.4.1
v0.4.10
v0.4.11
v0.4.12
v0.4.13
v0.4.14
v0.4.15
v0.4.16
v0.4.17
v0.4.18
v0.4.19
v0.4.2
v0.4.20
v0.4.21
v0.4.22
v0.4.23
v0.4.24
v0.4.25
v0.4.26
v0.4.27
v0.4.28
v0.4.29
v0.4.3
v0.4.30
v0.4.31
v0.4.32
v0.4.33
v0.4.34
v0.4.35
v0.4.36
v0.4.37
v0.4.38
v0.4.39
v0.4.4
v0.4.40
v0.4.41
v0.4.42
v0.4.43
v0.4.44
v0.4.45
v0.4.46
v0.4.47
v0.4.48
v0.4.49
v0.4.5
v0.4.50
v0.4.51
v0.4.52
v0.4.53
v0.4.54
v0.4.55
v0.4.56
v0.4.57
v0.4.58
v0.4.59
v0.4.6
v0.4.60
v0.4.61
v0.4.62
v0.4.63
v0.4.64
v0.4.65
v0.4.66
v0.4.67
v0.4.68
v0.4.69
v0.4.7
v0.4.70
v0.4.71
v0.4.72
v0.4.73
v0.4.74
v0.4.75
v0.4.76
v0.4.77
v0.4.78
v0.4.79
v0.4.8
v0.4.80
v0.4.81
v0.4.82
v0.4.83
v0.4.84
v0.4.85
v0.4.86
v0.4.87
v0.4.88
v0.4.89
v0.4.9
v0.4.90
v0.4.90.1
v0.4.91
${ noResults }
submit-social-housing-letti.../docs/form/runner.md
1.8 KiB
1.8 KiB
parent | nav_order |
---|---|
Generating forms | 2 |
Form runner
The Form runner is composed of:
Ruby classes:
- A singleton form handler that instantiates an instances of each form definition (config file we have) combined with the setup section that is common to all forms. This is created at rails boot time. (
app/models/form_handler.rb
) - A
Form
class that is the entry point for parsing a form definition and handles most of the associated logic (app/models/form.rb
) Section
,Subsection
,Page
andQuestion
classes (app/models/form/
)- Setup subsection specific instances (subclasses) of
Section
,Subsection
,Pages
andQuestions
(app/form/setup/
)
ERB templates:
- The page view which is the main view for each form page (
app/views/form/page.html.erb
) - Partials for each question type (radio, checkbox, select, text, numeric, date) (
app/views/form/
) - Partials for specific question guidance (
app/views/form/guidance
) - The check answers page which is the view for the answer summary page of each section (
app/views/form/check_answers.html.erb
)
Routes for each form page are generated by looping over each Page instance in each Form instance held by the form handler and defining a GET
path. The corresponding controller method is also auto-generated with meta-programming via the same looping in app/controllers/form_controller.rb
All form pages submit to the same controller method (app/controllers/form_controller.rb#submit_form
) which validates and persists the data, and then redirects to the next form page that identifies as routed_to
given the current case log state.
Form models and definition
For information about the form model and related models (section, subsection, page, question) and how these relate to each other see form definition.