Luca M. wrote:
<%= collection_select(:searchfield, :name,
Contact.content_columns.collect{|c| c.name}, :to_s, :humanize) %>
<%= text_field(:searchfield, :value) %>
che crea un select usando le colonne del modello (mette ill nome della
colonna nel valore e la versione “leggibile” nel nome della option).
Alla submit nel controller troverai il nome della colonna in
params[:searchfield][:name] poi:
Contact.find(:all, :conditions=>["? = ?", params[:searchfield][:name],
params[:searchfield][:value]])
grazie Luca,
in effetti così è molto meglio…
al posto del Contact.find io però ho usato questo:
def my_search4
surname = params[:contact][:surname]
tiporicerca = params[:searchfield][:name]
valorericerca = params[:searchfield][:value]
if valorericerca == “”
@contacts = Contact.find_by_sql [“SELECT * FROM contacts WHERE
(surname = ?)”, surname]
else
@contacts = Contact.find_by_sql [“SELECT * FROM contacts WHERE
(surname = ? AND ? = ?)”, surname, tiporicerca,
valorericerca]
end
end
perchè volevo per la ricerca un campo fisso e uno ‘selezionabile’. Il
codice non da problemi ma guarda il log:
Processing ContactController#my_search4 (for 127.0.0.1 at 2006-08-08
12:37:03) [POST]
Session ID: 6a9c308d4683734a3bf779ad0022bcfd
Parameters: {“searchfield”=>{“name”=>“name”, “value”=>“franco”},
“contact”=>{“surname”=>“zangrilli”}, “action”=>“my_search4”,
“controller”=>“contact”}
e[4;36;1mContact Load (0.000000)e[0m e[0;1mSELECT * FROM contacts
WHERE (surname = ‘zangrilli’ AND ‘name’ = ‘franco’)e[0m Completed in
0.06000 (16 reqs/sec)
*****PERCHE’ ‘name’ (‘name’ = ‘franco’) E’ TRA VIRGOLETTE? E’ UN ERRORE?
N.B. devi avere un oggetto Searchfield con campi name e value!
ho creato una tabella searchfields nel mio db ma l’ho lasciata vuota (?)
******se cerco solo per cognome (senza usare la select) la ricerca
funziona. ma se cerco inserendo anche del testo nella textarea della
select allora non ho errore ma non mi viene alcun risultato!
ciao,
Luca
P.S. l’ho scritto al volo, senza testarlo…
grazie mille