Skip to content

A Rails engine that programatically generates surveys

License

Notifications You must be signed in to change notification settings

jaredhales/questionable

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Questionable

Questionable is a Rails engine that make it easier to create and answer surveys through a web interface.

You can create your questions and options through the included ActiveAdmin interface. If ActiveAdmin is installed in your application, Questionable will automatically add admin pages.

Then you can use the included partial template and controller for displaying the questions and recording your users’ answers.

Installation

Add Questionable to your Gemfile:

gem 'questionable_surveys'

or for the latest:

gem 'questionable_surveys', :git => 'git://github.com/bespokepost/questionable.git'

Then run:

bundle install
rake questionable:install:migrations
rake db:migrate

Add Questionable to your config/routes.rb:

mount Questionable::Engine, :at => 'questions'

Optionally add the following to app/assets/stylesheet/application.css:

*= require questionable

Usage

Create some questions

Create one or more Questions. Supported input_types include select, multiselect, radio, checkboxes, date, and string.

# input_type may be select, multiselect, radio, checkboxes, or string.
q = Questionable::Question.create(title: 'What is your favorite color?', input_type: 'select', note: 'This is important')

Add Options, unless input_type is ‘string’

q.options.create(title: 'Red',   position: 1)
q.options.create(title: 'Green', position: 2)
q.options.create(title: 'Blue',  position: 3)

Questions must be assigned a ‘subject’ before they are used. They subject can be either an object, via a polymorphic association, or something general like “preferences”, which we can pass here as a symbol or string.

e.g.

@product = Product.find(123)
Questionable::Assignment.create(question_id: q.id, subject: @product)

or

Questionable::Assignment.create(question_id: q.id, subject_type: 'preferences')

In your controller

Here’s we fetch question-assignments for a particular symbol:

@assignments = Questionable::Assignment.with_subject(:preferences)

and here, for a product object:

@product = Product.find(params[:id])
@assignments = Questionable::Assignment.with_subject(@product)

In your view

With HAML

= render partial: 'questionable/assignments/form', locals: { assignments: @assignments }

Or ERB

<%= render partial: 'questionable/assignments/form', locals: { assignments: @assignments } %>

Running Tests

rake spec

Author

Written by Nick Urban at Bespoke Post.

Licence

This project uses the MIT-LICENSE.

About

A Rails engine that programatically generates surveys

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 88.1%
  • HTML 7.1%
  • CSS 2.9%
  • JavaScript 1.9%