Commit 39f927e5bbb18054bdd572b22b0a6be3455aceff
1 parent
b27c4c3a
Exists in
master
and in
1 other branch
added params to search and order questions
Showing
1 changed file
with
21 additions
and
21 deletions
Show diff stats
app/controllers/choices_controller.rb
| ... | ... | @@ -7,27 +7,27 @@ class ChoicesController < InheritedResources::Base |
| 7 | 7 | before_filter :authenticate |
| 8 | 8 | |
| 9 | 9 | def index |
| 10 | - if params[:limit] | |
| 11 | - @question = current_user.questions.find(params[:question_id]) | |
| 12 | - | |
| 13 | - find_options = {:conditions => {:question_id => @question.id}, | |
| 14 | - :limit => params[:limit].to_i, | |
| 15 | - :order => 'score DESC' | |
| 16 | - } | |
| 17 | - | |
| 18 | - find_options[:conditions].merge!(:active => true) unless params[:include_inactive] | |
| 19 | - find_options.merge!(:offset => params[:offset]) if params[:offset] | |
| 20 | - | |
| 21 | - @choices = Choice.find(:all, find_options) | |
| 22 | - | |
| 23 | - else | |
| 24 | - @question = current_user.questions.find(params[:question_id], :include => :choices) #eagerloads ALL choices | |
| 25 | - unless params[:include_inactive] | |
| 26 | - @choices = @question.choices(true).active.find(:all) | |
| 27 | - else | |
| 28 | - @choices = @question.choices.find(:all) | |
| 29 | - end | |
| 30 | - end | |
| 10 | + order = 'score DESC' | |
| 11 | + order = params[:order].map{|a| "#{a.first} #{a.second}"}.join(',') unless params[:order].blank? | |
| 12 | + | |
| 13 | + conditions = [] | |
| 14 | + conditions << ['lower(data) like ?', params[:filter][:data].downcase] if params[:filter] && !params[:filter][:data].blank? | |
| 15 | + | |
| 16 | + @question = current_user.questions.find(params[:question_id]) | |
| 17 | + | |
| 18 | + find_options = {:conditions => {:question_id => @question.id}, | |
| 19 | + :order => order | |
| 20 | + } | |
| 21 | + | |
| 22 | + conditions << ["question_id = ?", @question.id] | |
| 23 | + conditions << ['active = ?', true] unless params[:include_inactive] | |
| 24 | + find_options[:conditions] = [conditions.map{|c| c[0] }.join(" AND "), *conditions.map{|c| c[1..-1] }.flatten] | |
| 25 | + | |
| 26 | + find_options.merge!(:limit => params[:limit].to_i) if params[:limit] | |
| 27 | + find_options.merge!(:offset => params[:offset]) if params[:offset] | |
| 28 | + | |
| 29 | + @choices = Choice.find(:all, find_options) | |
| 30 | + | |
| 31 | 31 | index! do |format| |
| 32 | 32 | format.xml { render :xml => @choices.to_xml(:only => [ :data, :score, :id, :active, :created_at, :wins, :losses], :methods => :user_created)} |
| 33 | 33 | end | ... | ... |