Skip to content
This repository has been archived by the owner on Oct 11, 2019. It is now read-only.
/ ask Public archive

Allow your site's maintainers to easily create forms.

License

Notifications You must be signed in to change notification settings

biola/ask

Repository files navigation

Ask

Ask is a Rails engine that provides tools to simplify the process of letting your app's users build forms for things like questionnaires or surveys.

Requirements

  • Rails 3.1 or higher
  • jQuery
  • jQuery UI
  • Uses Carrierwave for uploads

More information will be on the wiki.

Installation

Add to your Gemfile:

gem 'ask'

In your terminal run:

bundle
rake ask_engine:install:migrations
rake db:migrate

Usage

Ask needs to be tied to two models in your application: an "asker" and an "answerer". The asker model should be the model that has questions, such as a Survey or Event. The answerer model should be the model that has answers to the questions such as a SurveySubmission or an EventRegistration.

In your asker model add:

acts_as_asker

In your answerer model add:

acts_as_answerer

In your asker form views, inside an already defined form_for helper add:

<%= render(:partial => 'asker/form', :locals => { :f => f }) %>

In your answerer form views, inside an already defined form_for helper add:

<%= render(:partial => 'answerer/form', :locals => { :f => f }) %>

In your javascript manifest file add:

//= require ask

In your stylesheet manifest file add:

/*  
*= require ask  
*/

If you want your form to start with one question, you can do the following... In your asker controller's new and edit methods you'll need to build the first question and choice. The best way to do this is create a private method:

def build_questions
  @event.questions.build
  @event.questions.each{|q| q.choices.build}
end

Then at the top of your asker controller, include:

before_filter :build_questions, :only => [:new, :edit]
# or you can call the build_questions method inside the new or edit controller

In your answerer controller's new and edit methods you'll need to call build_or_create_answers and pass it in the appropriate questions. Such as:

@event_registration.build_or_create_answers @event_registration.event.questions

Finally you'll need to define an asker method on your answerer model, like so:

class EventRegistration < ActiveRecord::Base
  def asker  
    return event  
  end
end

Configuration

If you want to changed the default whitelisted file types for upload questions, just drop this into an initializer file.

Ask.configure do |config|
  @upload_whitelist = %w(jpg jpeg gif png doc docx txt pdf xls xlsx zip)
end

Build Status

Build Status

License

MIT License