Little Live search problem


#1

Works fine but when you use backspace or delete on the search word and
it hits 0 characters it displays ALL the Test names in the database!

def live_search
@phrase = request.raw_post || request.query_string
a1 = “%”
a2 = “%”
@searchphrase = a1 + @phrase + a2
@results = Test.find(:all, :conditions => [ “test_name LIKE ?”,
@searchphrase])

@number_match = @results

render(:layout => false)

end


#2

Rob B. wrote:

Works fine but when you use backspace or delete on the search word and
it hits 0 characters it displays ALL the Test names in the database!

def live_search
@phrase = request.raw_post || request.query_string
a1 = “%”
a2 = “%”
@searchphrase = a1 + @phrase + a2
@results = Test.find(:all, :conditions => [ “test_name LIKE ?”,
@searchphrase])

@number_match = @results

render(:layout => false)

end

@results = @phrase.empty? ? nil : Test.find(:all, :conditions =>
[“test_name LIKE ?”, @searchphrase])


#3

Alex W. wrote:

@results = @phrase.empty? ? nil : Test.find(:all, :conditions =>
[“test_name LIKE ?”, @searchphrase])

Thanks Alex but I have .empty? in my view for the results.
Any way around this?

NoMethodError in Search#live_search

Showing app/views/search/live_search.rhtml where line #1 raised:

You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occured while evaluating nil.empty?

Extracted source (around line #1):

1: <% if @results.empty? %>
2: No match for ‘<%=h @phrase %>.’
3: <% else %>
4: <% @results.each do |result| %>


#4

Justin Mecham wrote:

Try @phrase.blank? instead, as it will check for a nil value before
attempting to call empty?.

J

Didn’t work, same result as above.


#5

Hang on just swapped the view to say .blank? too and it works. Thanks J
and Alex.


#6

Try @phrase.blank? instead, as it will check for a nil value before
attempting to call empty?.

J