Raony Vieira ferreira wrote:
> CONTROLLER
> 
>   def index
>     @contract = Contract.new(params[:contract])
>     page = (params[:page] ||= 1).to_i
>     @contracts = Contract.search_index({:page => page})
>     @legal_entities = LegalEntity.all(:select => "CD_PESSOA_JURIDICA,
> NM_PESSOA", :joins => [:person])
>     @persons = Person.all
>       respond_to do |format|
>         format.html # index.html.erb
>       end
>   end
> 
> 
>   def list
>     @contract = Contract.new(params[:contract])
>     page = (params[:page] ||= 1).to_i
>     @contracts = Contract.find_by_params(params[:contract])
>     @legal_entities = LegalEntity.all(:select => "CD_PESSOA_JURIDICA,
> NM_PESSOA", :joins => [:person])
>     @person = Person.all
>     render :index
>   end

Seems like this should all be controller work (well, not quite, and this 
is based on the mislav-will_paginate gem)...

You could use a generic
@contracts = Contract.paginate :conditions => cond, :page => 
params[:page]

where cond is your scoping criteria, such as:

cond = ['name LIKE ?', some_params_entry] or
cond = ['1=1'] for the everything case

The only difference in your two methods is the Contract.find...

Not knowing what the search_index or find_by_params methods do 
precisely, could you create a single build_conditions method in the 
Contract model that returns 'cond' and covers all your search cases to 
simplify your logic?

index and list are awfully similar... do you need both?
-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to