Hieronder zal ik proberen op een beknopte wijze uitleggen hoe je een textsearch-form kunt maken in Rails.
Hiermee kun je je applicatie alle textvelden in je database (MySQL) laten doorzoeken.
Je kunt ook gebruik maken van AND , OR , NOT , ...
1. Maak eerst een rails app:
Rails [app]
2. Voeg search.rb toe in je lib-directory van je app.
3. installeer de gem 'will_paginate':
gem install will_paginate
3. Voeg de 'search.rb' toe aan je model: (boven de class !)
require 'search'
4. Voeg volgende regel toe aan het bestand environment.rb in de /config-directory: (helemaal onderaan!)
require 'will_paginate'
5. Voeg volgende regels toe aan je 'views/naam_controller/index.html.erb':
<% form_tag ('/naam_controller'), :method => :get do %>
<%= text_field_tag "q", @criteria, :maxlength => "256", :title => "Zoek" %>
<%= submit_tag 'Zoek' %>
<% end %>
6. Voeg volgende regels toe aan je controller:
class naam_Controller < ApplicationController
def index
@criteria = params[:q]
if @criteria
# Search
@varabele = Model_naam.search(@criteria, :page => params[:page])
else
# No search
@variabele = Model_naam.find(:all)
end
end
....
end
7. Start je server:
ruby script/server
(Opgelet: De namen ' Model_naam, @variabele, naam_controller' dien je te vervangen door je eigen gegevens specifiek aan je applicatie)
NB:Tijdens het testen van de searchform kwam volgende foutmelding op het scherm:
undefined method `strip_punctuation’ for “note”:String.
Heb dit opgelost door het bestand 'extentions.rb' in /lib-directory te plaatsen, en in /config/environment.rb een require 'extentions.rb' te plaatsen. Had dit gevonden in de volgende voorbeeldapplicatie
Voor meer info surf naar:
http://davedupre.com/2007/08/02/ruby-text-search/ (= originele uitleg)
http://wiki.rubyonrails.org/rails/pages/TextSearch
Geen opmerkingen:
Een reactie posten