woensdag 21 januari 2009

éénvoudige textsearch in je Rails applicatie

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