From: Mark Toth Date: 2007-12-31T01:38:58+09:00 Subject: Re: replace words to be bold for each search word Well I卒m using it together with some ajax search from a database. Here卒s my code: search_controller.rb ======================= def live_search $KCODE = 'latin1' @code = $KCODE a1 = "%" a2 = "%" @searchstring_name_temp = params[:searching] @searchstring_name = @searchstring_name_temp.rstrip.gsub(" ", "%' AND name LIKE '%") @searchstring_sku_temp = params[:searching] @searchstring_sku = @searchstring_sku_temp.rstrip.gsub(" ", "%' AND sku LIKE '%") @results = Product.find_by_sql("SELECT * FROM products WHERE name LIKE'"+a1+@searchstring_name+a2+"' OR sku LIKE'"+a1+@searchstring_sku+a2+"' order by name asc LIMIT 0,50;") # @results = Product.find_by_sql(:all, :conditions => [ "name LIKE ?", a1+@searchstring+a2], :limit => 50) @number_match = @results.length render(:layout => false) end def highlight(text,search_string) keywords = search_string.squeeze.strip.split(" ").compact.uniq matcher = Regexp.new( '(' + keywords.join("|") + ')' ) highlighted = text.gsub(matcher) { |match| "#{match}" } return highlighted end live_search.rb ================ <%= @searchstring %> <% if @results.empty? %> not found! <% else %> found <%= @number_match %> time(s)!
<% @text = "This is an example of the text." @search = "example text" %> <%= highlight(@text,@search) %> <% @results.each do |row| %> <% end %>

sku

name

<%= highlight(row.sku.capitalize,@searchstring_name_temp) %> <%= highlight(row.name.capitalize,@searchstring_name_temp) %>
<% end %> -- Posted via http://www.ruby-forum.com/.