Hi Guys,
In my rails app, I present a table of data that I want to be able to
filter using multiple criteria. I’ve created a one-line table of
input fields above my table to accept filter criteria like this…
<%= javascript_include_tag :defaults %>
Search: | <%= text_field_tag("namequery", @params['namequery'], :size => 19) %> | <%= text_field_tag("ipquery", @params['ipquery'], :size => 17 ) %> | <--additional rows deleted here---> |
<%= observe_field ‘namequery’, :frequency => 1,
:update => ‘systemTable’,
:before => “Element.show(‘spinner’)”,
:success => “Element.hide(‘spinner’)”,
:url => {:action => ‘select’},
:with => ‘namequery’ %>
<%= observe_field ‘ipquery’, :frequency => 1,
:update => ‘systemTable’,
:before => “Element.show(‘spinner’)”,
:success => “Element.hide(‘spinner’)”,
:url => {:action => ‘select’},
:with => ‘ipquery’ %>
<…additional observers deleted here>
In my controller, I have this code to process entries in those fields:
unless params[:namequery] == "" || params[:namequery].nil?
conditions = "host_name LIKE \'#{@params[:namequery]}%\'"
end
unless params[:ipquery] == "" || params[:ipquery].nil?
ipcondition = "ip_address like \'#{@params[:ipquery]}%\'"
conditions = conditions.nil? ? ipcondition : "#{conditions} AND
#{ipcondition}"
end
I then pass use those criteria to filter the collection I send to the
partial which displays the table of data:
@systems = System.find(:all, :order => sort, :conditions =>
conditions)
I want to be able to enter a partial system name and a partial ip
address, e.g., and return all systems that meet both criteria.
Both filter fields work correctly alone, but if I enter one and then
the other, only the second one entered makes it to the conditions
clause. Using debug statements, I can see in the params[] fields only
get updated right after the entry is detected. On the next pass
through, the params value for the previously entered field remains “”
even though the input is still visible in the entry field.
How do I get around this problem and detect the value that was entered
previously?
Thanks for any advice you can give me.
– Mike