Witam jestem początkującym użytkownikiem Ruby on Rails. natknąłem sie na problem który nie daje mi spokoju. A mianowicie chodzi o wyszukiwarke live search. Na PC wszystko dziala ok ale problem pojawia sie u mnie na laptopie i nie wiem czym moze byc to spowodowane.
Przy wpisywaniu naprzyklad tytulu “Ajax i PHP” na laptopie wyskakuje mi mniej wiecej cos takiego “Ajax%20i%20PHP” co oczywiscie nie znajduje tego zdania w MySQL-u.Po prostu w miejsce spacji wpisuje mi krzaczek %20 i nie wiem jak sie tego pozbyc. Na PC wszystko dziala ok.Podam kod :
Dla Peceta:
[color=#FF0000]search_controller.rb[/color]
[code]class SearchController < ApplicationController
def live_search
@phrase = request.raw_post || request.query_string
@phrase = @phrase.strip
if !@phrase.empty?
a1 = “%”
a2 = “%”
@searchphrase = a1 + @phrase + a2
@results = Product.find(:all, :conditions => [ “title LIKE ?”, @searchphrase])
@number_match = @results.length
render(:layout => false)
else
render :nothing => true
end
end
end[/code]
Na laptopie [color=#FF0000]search_controller.rb[/color] wygląda nieco inaczej poniewaz przy wyszukiwaniu do słowa “Ajax i PHP” dodawany byl znak “=” co oczywiscie konczylo sie tym ze nie znajdywal tego tytulu w bazie danych:
[code]class SearchController < ApplicationController
def live_search
@phrase = request.raw_post[0,request.raw_post.length-1] || request.query_string
@phrase = @phrase.strip
if !@phrase.empty?
a1 = “%”
a2 = “%”
@searchphrase = a1 + @phrase + a2
@results = Product.find(:all, :conditions => [ “title LIKE ?”, @searchphrase])
@number_match = @results.length
render(:layout => false)
else
render :nothing => true
end
end
end[/code]
Widoki [color=#FF0000]search.rhtml[/color] i [color=#FF0000]live_search.rhtml[/color] sa takie same na laptopie i PC:
[color=#FF0000]search.rhtml[/color]
[quote]<%= javascript_include_tag “prototype” %>
<%= start_form_tag({:action => “search”}, { :onSubmit => “Element.show(‘spinner’);” }) %>
| Szukaj: | <%= text_field_tag :searchtext %> |
<%= observe_field(:searchtext,
:frequency => 0.5,
:update => :search_hits,
:loading => “Element.show(‘spinner’)”,
:complete => “Element.hide(‘spinner’)”,
:url => { :action => :live_search }) %>
[quote]<% if @results.empty? %>
‘<%=h @phrase %>’ nie znaleziono!
<% else %>
‘<%=h @phrase %>’ znaleziono <%= @number_match %>
<% end %>[/quote]
Nie wiem czym moze to byc spowodane. Na laptopie mam angielska wersje WIN XP a na PC polska wersje. Prosze o pomoc.
Użyj params[:searchtext]