Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Ruby (http://www.velocityreviews.com/forums/f66-ruby.html)
-   -   replace words to be bold for each search word (http://www.velocityreviews.com/forums/t847017-replace-words-to-be-bold-for-each-search-word.html)

Mark Toth 12-30-2007 12:38 PM

replace words to be bold for each search word
 
I have two strings:

The first string with dynamic content:
@string = "this is the example of the text"

The second one includes search words:
@search = "example text"

How can I do that it prints the search words with bold?

Result:
this is the <b>example</b> of the <b>example</b>
--
Posted via http://www.ruby-forum.com/.


Mark Toth 12-30-2007 02:02 PM

Re: replace words to be bold for each search word
 
Thanks for your answer.
I have now tried, but it only sets the first search word bold not the
others.

I´m a newbie for this and don´t know what the problem can be...

/regards,

mark

--
Posted via http://www.ruby-forum.com/.


Mark Toth 12-30-2007 02:08 PM

Re: replace words to be bold for each search word
 
Mark Toth wrote:
> Thanks for your answer.
> I have now tried, but it only sets the first search word bold not the
> others.
>
> I´m a newbie for this and don´t know what the problem can be...
>
> /regards,
>
> mark


I want to correct myself. It works for every search words, but they have
to be directly after each other.

It works for example:
text = "This is an example text."
search = "example text"
# here are "example text" bold

but not for:
text = "This is an example of the text."
search = "example text"
# here is only "example" bold

Any idea?

Regards,

Mark
--
Posted via http://www.ruby-forum.com/.


Mark Toth 12-30-2007 04:38 PM

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| "<b>#{match}</b>" }
return highlighted
end

live_search.rb
================
<%= @searchstring %>
<% if @results.empty? %>
not found!
<% else %>
found <b><%= @number_match %></b> time(s)!<BR>

<% @text = "This is an example of the text."
@search = "example text" %>
<%= highlight(@text,@search) %>

<table width=600 cellspacing="3">
<td width="100"><h2>sku</td><td width="500"><h2><b>name</td>
<% @results.each do |row| %>
<tr>
<td>
<%= highlight(row.sku.capitalize,@searchstring_name_te mp) %>
</td>
<td>
<%= highlight(row.name.capitalize,@searchstring_name_t emp)
%>
</td>

<% end %>
</table>
<% end %>
--
Posted via http://www.ruby-forum.com/.



All times are GMT. The time now is 07:32 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.