qwester 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +76 -2
- data/app/controllers/qwester/application_controller.rb +2 -0
- data/app/controllers/qwester/questionnaires_controller.rb +25 -0
- data/app/helpers/qwester/application_helper.rb +1 -0
- data/app/helpers/qwester/questionnaires_helper.rb +26 -0
- data/app/models/qwester/questionnaire.rb +5 -1
- data/app/views/qwester/questionnaires/index.html.erb +39 -0
- data/app/views/qwester/questionnaires/show.html.erb +32 -0
- data/config/routes.rb +9 -0
- data/lib/qwester.rb +1 -0
- data/lib/qwester/engine.rb +8 -0
- data/lib/qwester/version.rb +1 -1
- data/lib/rails/actionpack/lib/action_controller/base.rb +60 -0
- data/test/dummy/app/assets/javascripts/questionnaires.js +2 -0
- data/test/dummy/app/assets/stylesheets/questionnaires.css.scss +3 -0
- data/test/dummy/config/routes.rb +5 -1
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/seeds.rb +32 -0
- data/test/dummy/db/seeds/questions.yml +21 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +13216 -25038
- data/test/dummy/log/test.log +14515 -20692
- data/test/dummy/test/functional/qwester/questionnaires_controller_test.rb +132 -0
- data/test/dummy/test/unit/helpers/questionnaires_helper_test.rb +4 -0
- data/test/dummy/tmp/cache/assets/{CE4/280/sprockets%2F99d4bf693c83b5093ab8702160c1d6e5 → C67/1B0/sprockets%2F7929f8043d9664655de93105fb94d073} +0 -0
- data/test/dummy/tmp/cache/assets/{D64/6D0/sprockets%2Fefc35e335323b974c3e1bbbb13693ea4 → C90/A60/sprockets%2F92d28df70396f33d8875c241334d07d9} +0 -0
- data/test/dummy/tmp/cache/assets/C9C/330/sprockets%2Fd555282f7ba49f75897eb3f456426429 +0 -0
- data/test/dummy/tmp/cache/assets/CA0/7C0/sprockets%2F34d642456080359ef03f0b0c45c06c1f +0 -0
- data/test/dummy/tmp/cache/assets/{DA3/9B0/sprockets%2Fa2bdb6a97d41e3cca6465c59cd5929b5 → CB8/330/sprockets%2F0341626442591c9733ce395efe9ac1f7} +0 -0
- data/test/dummy/tmp/cache/assets/{D4F/930/sprockets%2F593ef7a6dd9e164ce9156637a079eba2 → CC0/940/sprockets%2F665007667cd89ce695ed096e8fe02012} +0 -0
- data/test/dummy/tmp/cache/assets/{D76/CB0/sprockets%2Fbcaf3567253694bc09a79858c7bdad2a → CD0/720/sprockets%2Fb4c23e656289757c727ade07856f9d97} +0 -0
- data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/{D69/E90/sprockets%2F14aed5aa2792db4162f05688f04dfa5e → CDE/C00/sprockets%2F770b464e29706b3da59850aa25b66f3b} +0 -0
- data/test/dummy/tmp/cache/assets/{D25/BA0/sprockets%2F0fa25091225221bc828ca4abb28cb5c8 → CE4/E40/sprockets%2F1884153b330fd109378f9a68c72fd5ab} +0 -0
- data/test/dummy/tmp/cache/assets/CE7/AC0/sprockets%2F82a9eee3fc6177e85610ca13415843e8 +0 -0
- data/test/dummy/tmp/cache/assets/CED/640/sprockets%2F11932203dc8ff571f5fe9c3877c654e2 +0 -0
- data/test/dummy/tmp/cache/assets/{D33/D50/sprockets%2Ff8d0dac22223755ab4bae6c44180e829 → CF2/CE0/sprockets%2F363d26884ffc3cc5cb862637a5878a37} +0 -0
- data/test/dummy/tmp/cache/assets/{DA9/B40/sprockets%2Ff028f8a00eb67fbe213ef8fce8c97218 → D05/C70/sprockets%2F9d533f6017de6ba71d441726cbbe3512} +0 -0
- data/test/dummy/tmp/cache/assets/{D3E/330/sprockets%2F45f2fada4467c9ac38a41d9463b822c4 → D08/4B0/sprockets%2F475b85667b4f5b8a94c601b3a0bca524} +0 -0
- data/test/dummy/tmp/cache/assets/D09/D00/sprockets%2F09b76d906d5c56b21b480e25da8b4c33 +0 -0
- data/test/dummy/tmp/cache/assets/D15/E80/sprockets%2F95d406e247e22d640eda395eee85b434 +0 -0
- data/test/dummy/tmp/cache/assets/D1C/640/sprockets%2Fbe2cd8e243f65972d888bf06170308df +0 -0
- data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/D38/540/sprockets%2F86e1ad844bc9df4491a2a52b870421db +0 -0
- data/test/dummy/tmp/cache/assets/{CC9/6B0/sprockets%2F3df521832967357b1c7b16678fc8e8f7 → D40/6C0/sprockets%2F24e5ceb7a2f5cc396c6818ea3014378c} +0 -0
- data/test/dummy/tmp/cache/assets/D42/090/sprockets%2F28f94a066ac6fc41e0a4fba7f9592425 +0 -0
- data/test/dummy/tmp/cache/assets/D45/BA0/sprockets%2F87390210ac34ef8cb15f2a6bd8f9e629 +0 -0
- data/test/dummy/tmp/cache/assets/{CD6/AE0/sprockets%2F18183d077906f0468bdaa021e5944daa → D46/E50/sprockets%2F59bdc649cc2025e9368b836afa5e0e71} +0 -0
- data/test/dummy/tmp/cache/assets/D48/640/sprockets%2F9f4f18d910b678b1d0777e04cdaf6f24 +0 -0
- data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/{D22/7F0/sprockets%2Fb0746263298bc88dffc3faa791d44786 → D4E/E80/sprockets%2F259284864ce9624a4ca1dcdd6a6e6d97} +0 -0
- data/test/dummy/tmp/cache/assets/D59/D70/sprockets%2Fed9f0de1b65ae8d7ef89087c83728461 +0 -0
- data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/{D9E/BC0/sprockets%2F92b1852c4b3d97cf5a18fb9b171cdc3d → D73/030/sprockets%2Fec32f7966e5226fbcb535608f007cafe} +0 -0
- data/test/dummy/tmp/cache/assets/{C98/130/sprockets%2Fac989787df92df5f053582229580052f → D73/D50/sprockets%2F46ac3525c44b3c55ed3167ef4fbf65d7} +0 -0
- data/test/dummy/tmp/cache/assets/D74/7A0/sprockets%2Fad303ebb30768ef3c4e4389f57b9c0e5 +0 -0
- data/test/dummy/tmp/cache/assets/{D1C/6A0/sprockets%2F39f774b8adbce198362541931e4e80fc → D7A/D30/sprockets%2F4978e5b6a5a739fd3690cfb2c51ef2a6} +0 -0
- data/test/dummy/tmp/cache/assets/D90/E60/sprockets%2F9700622adefb7a797da2210b9bb5ec1b +0 -0
- data/test/dummy/tmp/cache/assets/D93/4C0/sprockets%2F857ecd2092cee11f740b3cf2e373ad2a +0 -0
- data/test/dummy/tmp/cache/assets/D94/790/sprockets%2Fd78be002b446eb324b68bf26bb1b3f8d +0 -0
- data/test/dummy/tmp/cache/assets/{CF4/190/sprockets%2F15945979ce0f558e72219220cdf8e5ee → DA2/3C0/sprockets%2F55eea898441a3e4e23fcad8441efd62b} +0 -0
- data/test/dummy/tmp/cache/assets/DA5/250/sprockets%2Fe5799db33cbaf3d4a2b6c411ff266c99 +0 -0
- data/test/dummy/tmp/cache/assets/{D36/C80/sprockets%2Ff5ef17012cd57c01767028aba0593fcf → DA9/F30/sprockets%2F9d6c36f2ebbb896a06c90db6ab537c79} +0 -0
- data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/DDE/420/sprockets%2Ffb8b186d5bf0307f86f65fc787d2adeb +0 -0
- data/test/dummy/tmp/cache/assets/DE6/210/sprockets%2F00369690fd2d499feccfacf96993fbea +0 -0
- data/test/dummy/tmp/cache/assets/{C9F/BF0/sprockets%2F74327e193051ca314d7f40d949aa0f01 → DE9/440/sprockets%2F0aa6a60aaa31e9cbdf03ce68f81d0d73} +0 -0
- data/test/dummy/tmp/cache/assets/DEA/360/sprockets%2F0b336bfd9ee211df3dbca3532c3c80dd +0 -0
- data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/{D6E/160/sprockets%2F589e06b575fdb89ccc10373f40ba2bf3 → E23/2D0/sprockets%2Fafbbca9eb07b028a50e7aa5df1647de7} +0 -0
- data/test/dummy/tmp/cache/assets/{D18/9A0/sprockets%2F790d9164fe7b9cb772271a0e2ddf2646 → E2B/010/sprockets%2F0f8d51e2f51ac49cdddf72cfbb92ab55} +0 -0
- data/test/dummy/tmp/cache/assets/{D6C/5B0/sprockets%2F4cd5cd94a5b8ce62e7635a63df0103e5 → E30/130/sprockets%2Ff79a4e4b9b2af4c1c8e00ecbffdd1685} +0 -0
- data/test/dummy/tmp/cache/assets/E82/AA0/sprockets%2F5c8e0d124c1f8ea2bfdabf41bfbcb88c +0 -0
- data/test/dummy/tmp/cache/sass/{ec74dbbd041d002f29da87d31c42c67a52577d7d → 03f4db846cef78021447876a632d2437876c53ab}/_base.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{ec74dbbd041d002f29da87d31c42c67a52577d7d → 03f4db846cef78021447876a632d2437876c53ab}/_forms.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{ec74dbbd041d002f29da87d31c42c67a52577d7d → 03f4db846cef78021447876a632d2437876c53ab}/_header.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{ec74dbbd041d002f29da87d31c42c67a52577d7d → 03f4db846cef78021447876a632d2437876c53ab}/_mixins.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{ec74dbbd041d002f29da87d31c42c67a52577d7d → 03f4db846cef78021447876a632d2437876c53ab}/_typography.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_button.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_clearfix.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_font-family.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_hide-text.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_html5-input-types.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_position.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_prefixer.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_timing-functions.scssc +0 -0
- data/test/dummy/tmp/cache/sass/2fd9c76d84cefb666046113b053d85103e19230b/questionnaires.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_all.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_buttons.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_gradients.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_icons.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_reset.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_rounded.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_sections.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_shadows.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_typography.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_utilities.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_variables.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_animation.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_appearance.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_background-image.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_background-size.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_background.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_border-image.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_border-radius.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_box-shadow.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_box-sizing.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_columns.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_flex-box.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_font-face.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_hidpi-media-query.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_image-rendering.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_inline-block.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_linear-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_perspective.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_radial-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_transform.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_transition.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_user-select.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_batch_actions.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_blank_slates.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_breadcrumbs.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_buttons.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_columns.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_comments.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_date_picker.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_dropdown_menu.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_flash_messages.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_grid.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_links.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_pagination.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_panels.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_popovers.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_scopes.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_status_tags.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_table_tools.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_tables.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d883993f4a35b9fb9fb68f2951234bfae10b809e → 67b9d8586d02a4b8f4bd8611c6c2e298896cbb35}/_footer.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d883993f4a35b9fb9fb68f2951234bfae10b809e → 67b9d8586d02a4b8f4bd8611c6c2e298896cbb35}/_main_structure.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d883993f4a35b9fb9fb68f2951234bfae10b809e → 67b9d8586d02a4b8f4bd8611c6c2e298896cbb35}/_title_bar.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{c7c7191f5bd579910d0a21a37cd1dab835baea9d → 76f791eeabd45b8ba449aea886b17e6a262986a9}/_dashboard.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{c7c7191f5bd579910d0a21a37cd1dab835baea9d → 76f791eeabd45b8ba449aea886b17e6a262986a9}/_logged_out.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_compact.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_deprecated-webkit-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_flex-grid.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_grid-width.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_linear-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_modular-scale.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_radial-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_render-gradients.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_tint-shade.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_transition-property-name.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{6d829b1892146f93bc53d024914f97a49c36b400 → 8a4317f5bff37a3c37ac0fdf7f9e6fca7b6ef3d5}/_bourbon-deprecated-upcoming.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{6d829b1892146f93bc53d024914f97a49c36b400 → 8a4317f5bff37a3c37ac0fdf7f9e6fca7b6ef3d5}/_bourbon.scssc +0 -0
- data/test/unit/qwester/questionnaire_test.rb +4 -0
- metadata +405 -404
- data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/link/NewGitGui.png +0 -0
- data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/original/NewGitGui.png +0 -0
- data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/thumbnail/NewGitGui.png +0 -0
- data/test/dummy/tmp/cache/assets/C4C/010/sprockets%2F54b8f935fa0154a496735945134b201c +0 -0
- data/test/dummy/tmp/cache/assets/C6B/340/sprockets%2Fac675153e3c112d081881cb5b0193343 +0 -0
- data/test/dummy/tmp/cache/assets/CB3/400/sprockets%2F0778280cf7cd9842623b4a47c3636eb0 +0 -0
- data/test/dummy/tmp/cache/assets/CB3/7B0/sprockets%2F8acda6f91309162736a905e927b791b0 +0 -0
- data/test/dummy/tmp/cache/assets/CB7/210/sprockets%2Fd75d7926600f009b7bc12f299575af61 +0 -0
- data/test/dummy/tmp/cache/assets/CBE/9C0/sprockets%2F21d85716322c5b339f859cc7d9517b6e +0 -0
- data/test/dummy/tmp/cache/assets/CC9/FB0/sprockets%2F255d9f63b60b2f99705d9ece86410996 +0 -0
- data/test/dummy/tmp/cache/assets/CDB/040/sprockets%2Fc732474e67003a4eb840eb44c5ca9385 +0 -0
- data/test/dummy/tmp/cache/assets/D16/CB0/sprockets%2Fb0e226708d5f9958bbaf5639fd402e50 +0 -0
- data/test/dummy/tmp/cache/assets/D37/F40/sprockets%2F34ae0821bc15772a27ca08fc3682fe7d +0 -0
- data/test/dummy/tmp/cache/assets/D3F/EB0/sprockets%2Fad2888184b513b29cc27bda05be8c396 +0 -0
- data/test/dummy/tmp/cache/assets/D4A/310/sprockets%2Fdd19e98ed3ea33cd27397508b0e34e74 +0 -0
- data/test/dummy/tmp/cache/assets/D52/2B0/sprockets%2Fcaba6996d3b0ce9425a2d4918e6e8797 +0 -0
- data/test/dummy/tmp/cache/assets/D61/190/sprockets%2Faece940f39e2ac68033f05b15fe10c16 +0 -0
- data/test/dummy/tmp/cache/assets/D61/6B0/sprockets%2F5f51d0141dcc429477e6169aabb1f2ad +0 -0
- data/test/dummy/tmp/cache/assets/D63/760/sprockets%2F03bf27ec3f65ed19bc131123a59b3d6f +0 -0
- data/test/dummy/tmp/cache/assets/D66/3A0/sprockets%2F02491a6027da7d0caa9c2282fd3f7e6f +0 -0
- data/test/dummy/tmp/cache/assets/D81/D40/sprockets%2Faa5b982ce995ea3c817a93f8c847a52e +0 -0
- data/test/dummy/tmp/cache/assets/DB3/6A0/sprockets%2F5fbfb11cd54686a98ffe386339a9ddc4 +0 -0
- data/test/dummy/tmp/cache/assets/DDA/830/sprockets%2Fde697cb19a97c9cdda00773d54e43ded +0 -0
- data/test/dummy/tmp/cache/assets/DFD/E80/sprockets%2Fb6ba4f337e14c4942a8e68bfaed03bff +0 -0
- data/test/dummy/tmp/cache/assets/E03/CE0/sprockets%2Fee7fdb52ea0ff7e5426102ee68beeb47 +0 -0
- data/test/dummy/tmp/cache/assets/E31/7C0/sprockets%2F306cef7b76fd0633afd6eecde15d7ab7 +0 -0
- data/test/dummy/tmp/cache/sass/ec74dbbd041d002f29da87d31c42c67a52577d7d/print.css.scssc +0 -0
data/README.rdoc
CHANGED
@@ -1,12 +1,80 @@
|
|
1
1
|
= Qwester
|
2
2
|
|
3
|
+
A rails engine used to add questionnaires to rails applications
|
3
4
|
|
5
|
+
== Installation
|
6
|
+
|
7
|
+
Add this to your Gemfile
|
8
|
+
|
9
|
+
gem 'qwester'
|
10
|
+
|
11
|
+
=== Migrations
|
12
|
+
Qwester includes a set of migrations to build the database tables to match
|
13
|
+
qwester's models. To use these migrations within the host application, run
|
14
|
+
this rake task:
|
15
|
+
|
16
|
+
rake qwester:install:migrations
|
17
|
+
|
18
|
+
This will copy the migrations to the host application's db/migrate folder.
|
19
|
+
They will then be run next time the db:migrate task is run:
|
20
|
+
|
21
|
+
rake db:migrate
|
22
|
+
|
23
|
+
If you only wish to run the qwester migrations use a scope option:
|
24
|
+
|
25
|
+
rake db:migrate SCOPE=qwester
|
26
|
+
|
27
|
+
== Questionnaire
|
28
|
+
|
29
|
+
To create a new questionnaire, first create a set of questions that you
|
30
|
+
wish to appear within the questionnaire. Then create a questionnaire and
|
31
|
+
associate the questions with that questionnaire. Questions can be used in
|
32
|
+
multiple questionnaires, and can be ordered within each questionnaire. That
|
33
|
+
is, the first question in one questionnaire, can be displayed as the second
|
34
|
+
question in another questionnaire.
|
35
|
+
|
36
|
+
=== Questions and Answers
|
37
|
+
|
38
|
+
Each question has a number of answers associated with it. The default set of
|
39
|
+
answers is given by:
|
40
|
+
|
41
|
+
Qwester::Answer.standard_values
|
42
|
+
|
43
|
+
However, these can be modified and added to as you require. That is, each
|
44
|
+
question has a unique set of answers that can be modified as required.
|
45
|
+
|
46
|
+
=== Answer store
|
47
|
+
|
48
|
+
Submitted answers are stored in an AnswerStore object. On creation, each
|
49
|
+
answer_store is assigned a session_id that can then be used within session,
|
50
|
+
to identify the current user's answer_store. In this way, questionnaire
|
51
|
+
submissions can be tracked across multiple submissions.
|
52
|
+
|
53
|
+
=== Rule set
|
54
|
+
|
55
|
+
Groups of answers can be matched to rule sets using:
|
56
|
+
|
57
|
+
RuleSet.matching(answers)
|
58
|
+
|
59
|
+
which will return an array of rule sets that match those answers.
|
60
|
+
|
61
|
+
Each rule set has an url associated with it, and this url should lead a user
|
62
|
+
to a resource either within or outside the app.
|
63
|
+
|
64
|
+
RuleSet uses array_logic[http://github.com/reggieb/array_logic] to manage
|
65
|
+
the logic used to compare each rule set with the array of answers.
|
66
|
+
|
67
|
+
== Dummy
|
68
|
+
|
69
|
+
A test app is present within this engine, and provides an example of how
|
70
|
+
Qwester can be used within a Rails app. See test/dummy.
|
4
71
|
|
5
72
|
== Integration with ActiveAdmin
|
6
73
|
|
7
74
|
Qwester contains a set of ActiveAdmin registration files, that allow Qwester
|
8
75
|
models to be managed from within the parent app's active_admin space. Of course
|
9
|
-
ActiveAdmin needs to be installed and working in the parent rails application
|
76
|
+
ActiveAdmin needs to be installed and working in the parent rails application,
|
77
|
+
for this to work.
|
10
78
|
|
11
79
|
To use the Qwester ActiveAdmin registration files, add this to the active_admin
|
12
80
|
initializer in your application.
|
@@ -15,6 +83,12 @@ initializer in your application.
|
|
15
83
|
|
16
84
|
See test/dummy/config/initializers/active_admin.rb for an example
|
17
85
|
|
86
|
+
If you wish to over-ride some of Qwester's active admin registrations you will
|
87
|
+
need to reorder the active_admin load_paths. In this case, use this form of
|
88
|
+
the load_paths declaration:
|
89
|
+
|
90
|
+
config.load_paths = [Qwester.active_admin_load_path] + config.load_paths
|
91
|
+
|
18
92
|
Links to the admin pages for Qwester models will appear in a 'Qwester' sub-menu.
|
19
93
|
If you wish to change the name of the menu parent group, add this to an
|
20
94
|
initializer:
|
@@ -26,4 +100,4 @@ initializer:
|
|
26
100
|
|
27
101
|
Qwester.active_admin_menu = 'none'
|
28
102
|
|
29
|
-
See test/dummy/config/initializers/qwester.rb for an example
|
103
|
+
See test/dummy/config/initializers/qwester.rb for an example
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Qwester
|
2
|
+
class QuestionnairesController < ApplicationController
|
3
|
+
|
4
|
+
def index
|
5
|
+
@questionnaires = Qwester::Questionnaire.all
|
6
|
+
@rule_sets = matching_rule_sets
|
7
|
+
end
|
8
|
+
|
9
|
+
def show
|
10
|
+
@questionnaire = Qwester::Questionnaire.find(params[:id])
|
11
|
+
end
|
12
|
+
|
13
|
+
def update
|
14
|
+
@questionnaire = Qwester::Questionnaire.find(params[:id])
|
15
|
+
update_qwester_answer_store
|
16
|
+
redirect_to questionnaires_path
|
17
|
+
end
|
18
|
+
|
19
|
+
def reset
|
20
|
+
get_qwester_answer_store
|
21
|
+
@qwester_answer_store.reset
|
22
|
+
redirect_to questionnaires_path
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Qwester
|
2
|
+
module QuestionnairesHelper
|
3
|
+
def qwester_answers_selection_list(question, list_class = 'qwester_options')
|
4
|
+
button_name = "question_id[#{question.id}][answer_ids][]"
|
5
|
+
answers = question.answers
|
6
|
+
buttons = answers.collect do |answer|
|
7
|
+
if question.multi_answer?
|
8
|
+
button = check_box_tag(button_name, answer.id, answer_checked(answer))
|
9
|
+
else
|
10
|
+
button = radio_button_tag(button_name, answer.id, answer_checked(answer))
|
11
|
+
end
|
12
|
+
content_tag('li', "#{button}#{answer.value}".html_safe)
|
13
|
+
end
|
14
|
+
content_tag('ul', buttons.join.html_safe, :class => list_class)
|
15
|
+
end
|
16
|
+
|
17
|
+
def answer_checked(answer)
|
18
|
+
answer_store_answers.include? answer
|
19
|
+
end
|
20
|
+
|
21
|
+
def answer_store_answers
|
22
|
+
answer_store = get_qwester_answer_store
|
23
|
+
answer_store ? answer_store.answers : []
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -29,7 +29,11 @@ module Qwester
|
|
29
29
|
}
|
30
30
|
)
|
31
31
|
|
32
|
-
has_and_belongs_to_many
|
32
|
+
has_and_belongs_to_many(
|
33
|
+
:answer_stores,
|
34
|
+
:join_table => :qwester_answer_stores_questionnaires,
|
35
|
+
:uniq => true
|
36
|
+
)
|
33
37
|
|
34
38
|
validates :title, :presence => true
|
35
39
|
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<h1>Questionnaires</h1>
|
2
|
+
<div>
|
3
|
+
<% @questionnaires.each do |questionnaire| %>
|
4
|
+
|
5
|
+
<%= link_to(
|
6
|
+
image_tag(questionnaire.button_image.url(:link)),
|
7
|
+
questionnaire_path(questionnaire),
|
8
|
+
:class => 'image_link'
|
9
|
+
)
|
10
|
+
%>
|
11
|
+
<br>
|
12
|
+
<%= link_to(
|
13
|
+
questionnaire.title,
|
14
|
+
questionnaire_path(questionnaire),
|
15
|
+
:class => 'text_link'
|
16
|
+
)
|
17
|
+
%>
|
18
|
+
|
19
|
+
<% end %>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<% if @rule_sets.present? %>
|
23
|
+
<h2>Matching rule sets</h2>
|
24
|
+
<ul>
|
25
|
+
<% @rule_sets.each do |rule_set| %>
|
26
|
+
<li>
|
27
|
+
<%= rule_set.title %>:
|
28
|
+
<%= link_to(rule_set.link_text, rule_set.url) %>
|
29
|
+
</li>
|
30
|
+
<% end %>
|
31
|
+
</ul>
|
32
|
+
<% end %>
|
33
|
+
|
34
|
+
<%=
|
35
|
+
content_tag(
|
36
|
+
'p',
|
37
|
+
link_to('Clear answers and start again', reset_questionnaires_path)
|
38
|
+
) if @rule_sets.present?
|
39
|
+
%>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<h1><%= @questionnaire.title %></h1>
|
2
|
+
|
3
|
+
<% if @questionnaire.description.present? %>
|
4
|
+
<%= content_tag('div', sanitize(@questionnaire.description)) %>
|
5
|
+
<% else %>
|
6
|
+
<h2>Questions</h2>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<%= form_for(@questionnaire, :url => questionnaire_path(@questionnaire)) do |form| %>
|
10
|
+
<ul>
|
11
|
+
<%= form.fields_for(@questionnaire.answers, Qwester::Answer) do |answer_form| %>
|
12
|
+
<% @questionnaire.questions.each do |question| %>
|
13
|
+
<li>
|
14
|
+
<%= content_tag(
|
15
|
+
'span', question.title,
|
16
|
+
:class => "label#{' tooltip' if question.description?}",
|
17
|
+
:title => question.description
|
18
|
+
)
|
19
|
+
%>
|
20
|
+
|
21
|
+
<%= qwester_answers_selection_list(question) %>
|
22
|
+
|
23
|
+
</li>
|
24
|
+
<% end %>
|
25
|
+
<% end %>
|
26
|
+
</ul>
|
27
|
+
|
28
|
+
<p>
|
29
|
+
<%= form.submit('Submit') %>
|
30
|
+
<%= link_to('Back to the menu', questionnaires_path) %>
|
31
|
+
</p>
|
32
|
+
<% end %>
|
data/config/routes.rb
CHANGED
data/lib/qwester.rb
CHANGED
data/lib/qwester/engine.rb
CHANGED
data/lib/qwester/version.rb
CHANGED
@@ -0,0 +1,60 @@
|
|
1
|
+
module ActionController
|
2
|
+
class Base < Metal
|
3
|
+
|
4
|
+
protected
|
5
|
+
def update_qwester_answer_store
|
6
|
+
get_qwester_answer_store(true)
|
7
|
+
add_answers_to_qwester_answer_store
|
8
|
+
add_questionnaire_to_qwester_answer_store
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_qwester_answer_store(create_new = false)
|
12
|
+
if session[:qwester_answer_store]
|
13
|
+
current_qwester_answer_store
|
14
|
+
elsif create_new
|
15
|
+
new_qwester_answer_store
|
16
|
+
end
|
17
|
+
end
|
18
|
+
helper_method :get_qwester_answer_store
|
19
|
+
|
20
|
+
def current_qwester_answer_store
|
21
|
+
@qwester_answer_store = Qwester::AnswerStore.find_by_session_id(session[:qwester_answer_store])
|
22
|
+
end
|
23
|
+
|
24
|
+
def new_qwester_answer_store
|
25
|
+
set_qwester_answer_store Qwester::AnswerStore.create
|
26
|
+
end
|
27
|
+
|
28
|
+
def set_qwester_answer_store(answer_store)
|
29
|
+
@qwester_answer_store = answer_store
|
30
|
+
session[:qwester_answer_store] = @qwester_answer_store.session_id
|
31
|
+
@qwester_answer_store
|
32
|
+
end
|
33
|
+
|
34
|
+
def matching_rule_sets
|
35
|
+
if get_qwester_answer_store
|
36
|
+
Qwester::RuleSet.matching(@qwester_answer_store.answers)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# private
|
41
|
+
def add_answers_to_qwester_answer_store
|
42
|
+
answers = params[:question_id].values.collect do |question_values|
|
43
|
+
question_values[:answer_ids].collect{|id| Qwester::Answer.find(id)}
|
44
|
+
end
|
45
|
+
answers.flatten!
|
46
|
+
remove_answers_to_questions_answered_with(answers) if answers.present?
|
47
|
+
@qwester_answer_store.answers = (@qwester_answer_store.answers | answers)
|
48
|
+
end
|
49
|
+
|
50
|
+
def remove_answers_to_questions_answered_with(answers)
|
51
|
+
question_ids = answers.collect(&:question_id).uniq
|
52
|
+
answers_to_delete = @qwester_answer_store.answers.collect {|a| a if question_ids.include? a.question_id.to_i}.compact
|
53
|
+
@qwester_answer_store.answers.delete(answers_to_delete)
|
54
|
+
end
|
55
|
+
|
56
|
+
def add_questionnaire_to_qwester_answer_store
|
57
|
+
@qwester_answer_store.questionnaires << @questionnaire
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/test/dummy/config/routes.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
|
+
|
3
|
+
root :to => 'qwester/questionnaires#index'
|
2
4
|
|
3
5
|
if defined?(ActiveAdmin)
|
4
6
|
ActiveAdmin.routes(self)
|
5
7
|
devise_for :admin_users, ActiveAdmin::Devise.config
|
6
8
|
end
|
7
9
|
|
8
|
-
mount Qwester::Engine => "/
|
10
|
+
mount Qwester::Engine => "/questionnires"
|
11
|
+
|
12
|
+
|
9
13
|
end
|
Binary file
|
data/test/dummy/db/seeds.rb
CHANGED
@@ -3,6 +3,7 @@ Seeder = Dibber::Seeder
|
|
3
3
|
|
4
4
|
Seeder.seeds_path = "#{Rails.root}/db/seeds"
|
5
5
|
|
6
|
+
##############################
|
6
7
|
Seeder.monitor AdminUser
|
7
8
|
admin_email = 'admin@warwickshire.gov.uk'
|
8
9
|
password = 'changeme'
|
@@ -12,4 +13,35 @@ AdminUser.create!(
|
|
12
13
|
:password_confirmation => password
|
13
14
|
) unless AdminUser.exists?(:email => admin_email)
|
14
15
|
|
16
|
+
##############################
|
17
|
+
Seeder.monitor Qwester::Questionnaire
|
18
|
+
Seeder.monitor Qwester::Question
|
19
|
+
Seeder.monitor Qwester::Answer
|
20
|
+
Seeder.monitor Qwester::RuleSet
|
21
|
+
Seeder.process_log.start('first questionnaire questions', 'Qwester::Questionnaire.count > 0 ? Qwester::Questionnaire.first.questions.length : 0')
|
22
|
+
|
23
|
+
if Qwester::Questionnaire.count > 1
|
24
|
+
puts "**** Bypassing questionnaire, question, answer and rule set population"
|
25
|
+
puts "**** as there are already #{Qwester::Questionnaire.count} questionnaires in the system"
|
26
|
+
else
|
27
|
+
Seeder.objects_from('questions.yml').each do |holder, data|
|
28
|
+
questionnaire = Qwester::Questionnaire.find_or_create_by_title(data['title'])
|
29
|
+
|
30
|
+
if data['questions']
|
31
|
+
data['questions'].values.each do |question_data|
|
32
|
+
question = Qwester::Question.find_or_create_by_title(question_data['question'])
|
33
|
+
question.create_standard_answers
|
34
|
+
answer = question.answers.find_or_create_by_value('Yes')
|
35
|
+
rule_set = Qwester::RuleSet.find_or_initialize_by_title(question_data['title'])
|
36
|
+
rule_set.url = question_data['url']
|
37
|
+
rule_set.answers = [answer]
|
38
|
+
rule_set.save
|
39
|
+
questionnaire.questions << question
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
##############################
|
15
47
|
puts Seeder.report
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Q1:
|
2
|
+
title: Blue
|
3
|
+
questions:
|
4
|
+
a:
|
5
|
+
title: Other blue favourites
|
6
|
+
question: Is blue your favourite colour?
|
7
|
+
url: https://www.google.co.uk/search?q=favourite+blue
|
8
|
+
|
9
|
+
b:
|
10
|
+
title:
|
11
|
+
question: Is the sky blue?
|
12
|
+
url: https://www.google.co.uk/search?q=sky+blue
|
13
|
+
|
14
|
+
|
15
|
+
Q2:
|
16
|
+
title: Qwester
|
17
|
+
questions:
|
18
|
+
a:
|
19
|
+
title: As you like qwester
|
20
|
+
question: Do you like qwester?
|
21
|
+
url: https://github.com/reggieb/qwester
|