Skip to content

Instantly share code, notes, and snippets.

@tonsV2
Created February 9, 2011 22:29
Show Gist options
  • Save tonsV2/819459 to your computer and use it in GitHub Desktop.
Save tonsV2/819459 to your computer and use it in GitHub Desktop.
Nested resources and pagination
route:
resources :muscle_groups do
resources :muscles
end
controller index method:
def index
if params[:muscle_group_id]
muscle_group_id = params[:muscle_group_id]
@muscles = Muscle.paginate :page => params[:page], :order => 'created_at DESC', :conditions => ['muscle_group_id = ?', muscle_group_id]
else
@muscles = Muscle.paginate :page => params[:page], :order => 'created_at DESC'
end
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @muscles }
end
end
Copy link

ghost commented Feb 9, 2011

You could add this to your model:

def self.search(search, page)
  if !search.blank?
    search.chomp!
    paginate :page => page, :conditions => ['muscle_group_id like ?', "%#{search}%"], :order => 'created_at'
  end
end

Call in your controller:

@muscles = Muscle.search(params[:search], params[:page])

@tonsV2
Copy link
Author

tonsV2 commented Feb 9, 2011

An else part is needed plus the use of like is overkill for an id column.

def self.search(search, page)
if !search.blank?
paginate :page => page, :conditions => ['muscle_group_id = ?', search], :order => 'name'
else
paginate :page => page, :order => 'name'
end
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment