B04a553de1b8b45433b841bba440cc42

How would you make this code a little simpler and nicer? Thanks

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#controller  
def search
    if params[:search]
      @query = params[:search][:query]
      @age =  params[:search][:age] unless params[:search][:age].blank?
      unless params[:search][:course_category_id].blank?
        @course_category = CourseCategory.find(params[:search][:course_category_id]) 
        @selected_category = [@course_category.title, @course_category.id]
        course_category_id = @course_category.id
      end
    end
    @courses = Course.paged_search(@query, @age, course_category_id, params[:page] )
    add_breadcrumb [_("Vyhledávání:") + ' ' + (@query || ""), nil ]
    @course_categories = CourseCategory.find(:all)
  end

#view

<%= select(:search, :age, [[_("Bez omezení"), ""], [_("1 rok"), 1.year.ago.to_s(:db)], [_("1 měsíc"), 1.month.ago.to_s(:db)], [_("1 týden"), 1.week.ago.to_s(:db)], [_("24 hodin"), 1.day.ago.to_s(:db)]], :selected => @selected_age )%>

Refactorings

No refactoring yet !

880cbab435f00197613c9cc2065b4f5a

danielharan

October 7, 2008, October 07, 2008 14:40, permalink

No rating. Login to rate!

Is this what's going on when params[:search] is nil?

1
2
3
4
def search
  Course.paged_search nil, nil, nil, params[:page]
  # ... add breadcrumb and course_categories
end
A8d3f35baafdaea851914b17dae9e1fc

Adam

October 7, 2008, October 07, 2008 14:46, permalink

No rating. Login to rate!

app/models/course.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
class Course < ActiveRecord::Base
  def self.search(search, page)
    query = search[:query]
    age   = search[:age] unless search[:age].blank?
    
    begin
      category_id = CourseCategory.find(search[:course_category_id]).id
    rescue ActiveRecord::RecordNotFound
    end
    
    paged_search(query, age, category_id, page)
  end
end

app/controllers/courses_controller.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
class CoursesController < ApplicationController
  before_filter :set_course_categories, :only => :search
  
  def search
    @courses = Course.search(params[:search] || {}, params[:page])
    add_breadcrumb [ _("Vyhledávání: #{@courses.query}"), nil ]
  end
  
  private
    def set_course_categories
      @course_categories = CourseCategory.all
    end
end
B04a553de1b8b45433b841bba440cc42

papricek.myopenid.com

October 7, 2008, October 07, 2008 16:11, permalink

No rating. Login to rate!

nice, thanks!

Your refactoring





Format Copy from initial code

or Cancel