Skip to content

Instantly share code, notes, and snippets.

@marekkirejczyk
Created December 14, 2011 11:08
Show Gist options
  • Save marekkirejczyk/1476155 to your computer and use it in GitHub Desktop.
Save marekkirejczyk/1476155 to your computer and use it in GitHub Desktop.
Some model
class OpenQuestionnaireGroupsController < ApplicationController
before_filter :get_resource, :except => :create
before_filter(
:find_group_by_group_id,
:only => [:get_options_for_condition, :get_next_group_select, :update_next_group]
)
def show
respond_to do |format|
format.js { render :partial => 'group', :object => @open_questionnaire_group }
end
end
def create
@open_questionnaire = OpenQuestionnaire::Base.find params[:open_questionnaire_id]
@open_questionnaire_group = @open_questionnaire.groups.create
render :partial => 'open_questionnaires/group', :object => @open_questionnaire_group
end
def update
unless params[:open_questionnaire_group][:position].blank?
@open_questionnaire_group.insert_at params[:open_questionnaire_group][:position]
@open_questionnaire_group.check_consistency_after_group_reorder
render :nothing => true
else
if @open_questionnaire_group.update_attributes params[:open_questionnaire_group]
render :text => params[:open_questionnaire_group][:name]
else
render :json => @open_questionnaire_group.errors.full_messages, :status => :conflict
end
end
end
def destroy
unless @open_questionnaire_group.destroy
render :json => @open_questionnaire_group.errors.full_messages
else
@open_questionnaire_group.check_group_consistency :after_destroy
render :json => []
end
end
def get_next_group_select
if @group.is_target_of_condition_question?
groups = OpenQuestionnaire::Group.find(params[:group_id]).next_groups
render :partial => 'next_group_select', :locals => { :groups => groups }
else
render :text => nil
end
end
def update_next_group
@group.update_attribute :next_group_id, params[:next_group_id]
render :text => nil
end
protected
def find_group_by_group_id
@group = OpenQuestionnaire::Group.find params[:group_id]
end
def get_resource
@open_questionnaire_group = OpenQuestionnaire::Group.find params[:id] if params[:id]
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment