On 13 March 2012 12:54, Christopher Jones <li...@ruby-forum.com> wrote:
> I currently have these 3 search methods in my rails model, they are all
> the same apart from which field they search (take a look at the 5th line
> inside each method).
>
> def self.search(*args)
>  return [] if args.blank?
>  cond_text, cond_values = [], []
>  args.each do |str|
>  next if str.blank?
>  cond_text << "( %s )" % str.split.map{|w| "game_name LIKE ? "}.join("
> OR ")
>  cond_values.concat(str.split.map{|w| "%#{w}%"})
> end
> all :conditions =>  [cond_text.join(" AND "), *cond_values]
> end
>
> def self.gensearch(*args)
>  return [] if args.blank?
>  cond_text, cond_values = [], []
>  args.each do |str|
>  next if str.blank?
>  cond_text << "( %s )" % str.split.map{|w| "genre LIKE ? "}.join(" OR
> ")
>  cond_values.concat(str.split.map{|w| "%#{w}%"})
> end
> all :conditions =>  [cond_text.join(" AND "), *cond_values]
> end
>
> def self.consearch(*args)
>  return [] if args.blank?
>  cond_text, cond_values = [], []
>  args.each do |str|
>  next if str.blank?
>  cond_text << "( %s )" % str.split.map{|w| "console LIKE ? "}.join(" OR
> ")
>  cond_values.concat(str.split.map{|w| "%#{w}%"})
> end
> all :conditions =>  [cond_text.join(" AND "), *cond_values]
> end
>
>
>
> I currently have the following in my controller:
>
>   @games = Game.search(params[:search])
>   @games = Game.gensearch(params[:search])
>   @games = Game.consearch(params[:search])
>
>
>
>
> and the following in my view:
>
>   <%= form_tag games_path, :controller => 'games', :action => 'search',
> :method => 'get' do %>
>        <%= text_field_tag :search, params[:search] %>
>        <%= submit_tag t('.searchb'), :game_name => nil %>
>   <% end %>
>
>   <%= form_tag games_path, :controller => 'games', :action =>
> 'gensearch', :method => 'get' do %>
>        <%= text_field_tag :search, params[:search] %>
>        <%= submit_tag t('.searchb'), :game_name => nil %>
>   <% end %>
>
>   <%= form_tag games_path, :controller => 'games', :action =>
> 'consearch', :method => 'get' do %>
>        <%= text_field_tag :search, params[:search] %>
>        <%= submit_tag t('.searchb'), :game_name => nil %>
>   <% end %>
>
>
> I am having a problem that no matter what form I type text in to, it
> searches all the forms and displays the text in each form as if they are
> all connected. It will only return results that match all three columns
> as well despite me stating what action I want each to link_to.

The first thing to do is determine which bit is going wrong.  Look in
development.log to make sure the correct action is being invoked and
the parameters are correct.  Once that is working then use one or more
of the debug techniques described in the Rails Guide on Debugging to
work out where it is going wrong.

Colin

-- 
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-talk@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