Ciclare arrays

Ciao a tutti,
sto impazzendo…c’è qualcuno che mi può spiegare come posso ciclare un
array (risultato di una ricerca) in una view particolare?Grazie mille…

On 7/23/06, Giovanno Z. [email protected] wrote:

Ciao a tutti,
sto impazzendo…c’è qualcuno che mi può spiegare come posso ciclare un
array (risultato di una ricerca) in una view particolare?Grazie mille…

Non so se sia la risposta alla tua domanda comunque se hai un array, ad
esempio nella variabile @post, puoi passare tutti gli elementi
dell’array
nel seguente modo:

<% for post in @posts %>

<%= textilize(post) %>

<% end %>

Spero fosse quello che volevi.
–Andrea R.

Grazie Andrea, facendo come dici tu mi dà l’errore di Array contente
solo NIL. In breve ti dico la situazione : ho una tabella Contacts con
un campo surname e altri campi…nel contact_controller ho definito :

def my_search
surname = params[:contact][:surname]
surnames = Contact.find(:all, :conditions => [“surname = ?”,
surname])
end

dentro a views\contact ho i due files :

cerca.rhtml contenente il form :

Cognome

e un file my_search.rhtml (che vorrei mi listasse i risultati) dove ho
inserito il codice che mi hai dato tu :

<% for surname in @surnames %>

<%= textilize(surname) %>

<% end %>

Sapresti dirmi dove sbaglio, per piacere? In attesa grazie, Giovanni.

Andrea R. wrote:

On 7/23/06, Giovanno Z. [email protected] wrote:

Ciao a tutti,
sto impazzendo…c’è ±ualcuno che mi può ³°iegare come posso ciclare un
array (risultato di una ricerca) in una view particolare?Grazie mille…

Non so se sia la risposta alla tua domanda comunque se hai un array, ad
esempio nella variabile @post, puoi passare tutti gli elementi
dell’array
nel seguente modo:

<% for post in @posts %>

<%= textilize(post) %>

<% end %>

Spero fosse quello che volevi.
–Andrea R.

L’ho fatto, eseguendo una ricerca mi dà la pagina di errore che inizia
ora così :

Showing app/views/contact/my_search.rhtml where line #8 raised:

undefined method `each’ for #Contact:0x388bac8

come mai secondo te, cosa mi manca (oltre a essere un bravo
programmatore?)

Paolo Donà wrote:

surnames nella tua action è una variabile locale e quindi non viene
passata
alla view…in oltre puoi ‘accorciare’ la query.

Prova con:

def my_search
@surnames = Contact.find_by_surname(params[:contact][:surname])
end

On 7/23/06, Giovanno Z. [email protected] wrote:

Grazie Andrea, facendo come dici tu mi dà l’errore di Array contente
solo NIL. In breve ti dico la situazione : ho una tabella Contacts con
un campo surname e altri campi…nel contact_controller ho definito :

def my_search
surname = params[:contact][:surname]
surnames = Contact.find(:all, :conditions => [“surname = ?”,
surname])
end

Creado che l’errore sia da trovarsi nella definizione delle variabili
all’interno del tuo controller. Infatti se vuoi usarle all’interno della
vista, le varibili devono essere anticipate dal simbolo @ (in questo
modo
crei delle variabili di istanza) per essere condivise tra ‘azione e
vista’.
Quindi il codice corretto dell’azione
sarà:
def my_search
surname = params[:contact][:surname]
@surnames = Contact.find(:all, :conditions => [“surname = ?”,
surname])

qui ho aggiunto @ alla variabile in modo da poterla usare anche nella

vista my_search.rhtml
end

dentro a views\contact ho i due files :

e un file my_search.rhtml (che vorrei mi listasse i risultati) dove ho
inserito il codice che mi hai dato tu :

<% for surname in @surnames %>

<%= textilize(surname) %>

<% end %>

Togli pure textilize (lo avevo messo perchè presente in un codice di
esempio
che avevo, ma che non ti serve) e lascia solo surname senza parentesi
tonde.
Credo che fatto questo tutto funzioni.

–Andrea R.

Giovanno Z. ha scritto:

Ciao a tutti,
sto impazzendo…c’è qualcuno che mi può spiegare come posso ciclare un

array (risultato di una ricerca) in una view particolare?Grazie mille…

Trovi qui tutte le info:

http://api.rubyonrails.com/classes/ActionController/Base.html#M000206

Cmq

render :partial => “nome_partial”, :collection => @array

surnames nella tua action è una variabile locale e quindi non viene
passata
alla view…in oltre puoi ‘accorciare’ la query.

Prova con:

def my_search
@surnames = Contact.find_by_surname(params[:contact][:surname])
end

Ok, credo che mi stai risolvendo il problema…ora resta solo un errore
che mi dà a seguito della query :

Showing app/views/contact/my_search.rhtml where line #9 raised:

undefined method `textilize’ for #<#Class:0x35eb8a0:0x35eb870>

perchè ogni volta che uso qualche metodo (che ho trovato anch’io nei
manuali) mi dà errori di questo tipo?

Andrea R. wrote:

On 7/23/06, Giovanno Z. [email protected] wrote:

Grazie Andrea, facendo come dici tu mi dà ¬’errore di Array contente
solo NIL. In breve ti dico la situazione : ho una tabella Contacts con
un campo surname e altri campi…nel contact_controller ho definito :

def my_search
surname = params[:contact][:surname]
surnames = Contact.find(:all, :conditions => [“surname = ?”,
surname])
end

Creado che l’errore sia da trovarsi nella definizione delle variabili
all’interno del tuo controller. Infatti se vuoi usarle all’interno della
vista, le varibili devono essere anticipate dal simbolo @ (in questo
modo
crei delle variabili di istanza) per essere condivise tra ‘azione e
vista’.
Quindi il codice corretto dell’azione
sar�def my_search
surname = params[:contact][:surname]
@surnames = Contact.find(:all, :conditions => [“surname = ?”,
surname])

qui ho aggiunto @ alla variabile in modo da poterla usare anche nella

vista my_search.rhtml
end

dentro a views\contact ho i due files :

e un file my_search.rhtml (che vorrei mi listasse i risultati) dove ho
inserito il codice che mi hai dato tu :

<% for surname in @surnames %>

<%= textilize(surname) %>

<% end %>

Togli pure textilize (lo avevo messo perchè °resente in un codice di
esempio
che avevo, ma che non ti serve) e lascia solo surname senza parentesi
tonde.
Credo che fatto questo tutto funzioni.

–Andrea R.

Devi usare

 @surnames = Contact.find_all_by_surname(params[:contact][:surname])

2006/7/23, Giovanno Z. [email protected]:

L’ho fatto, eseguendo una ricerca mi dà la pagina di errore che inizia
ora così :

Showing app/views/contact/my_search.rhtml where line #8 raised:

undefined method `each’ for #Contact:0x388bac8

come mai secondo te, cosa mi manca (oltre a essere un bravo
programmatore?)

la ricerca corretta è
@surnames = Contact.find_all_by_surname(params[:contact][:surname])
che resituisce un array a differenza di
@surnames = Contact.find_by_surname(params[:contact][:surname])
che restituisce solo il primo riscontro.

Ciao

Alessio
Jabber(GTalk): [email protected]

“Il sapere umano appartiene al mondo”
–Skullbox, Synapse

On 7/23/06, Giovanno Z. [email protected] wrote:

Ok, credo che mi stai risolvendo il problema…ora resta solo un errore
che mi dà a seguito della query :

Showing app/views/contact/my_search.rhtml where line #9 raised:

undefined method `textilize’ for #<#Class:0x35eb8a0:0x35eb870>

perchè ogni volta che uso qualche metodo (che ho trovato anch’io nei
manuali) mi dà errori di questo tipo?

Ti manca la libreria necessaria. Apri prompt dei comandi o shell e
digita
quanto segue:

  • gem install* redcloth

Magicamente tutto dovrebbe funzionare. Per avere maggiori informazioni a
riguardo puoi cercare su Google le parole ‘textilize install rails’ e
vedrai
alcuni link con spiegazioni utili

–Andrea R.

Giovanno Z. wrote:

Grazie, in definitiva mi resta l’errore
can’t convert Contact into String
Perche il tuo “surname” e’ un oggetto della classe Contact, per avere
il surname del contact dovresti fare

<% for surname in @surnames %>

<%= textilize(surname.surname) %>

<% end %>

bye
Luca

Il 23-07-2006 Andrea R. ha scritto:

<% for post in @posts %>

<%= textilize(post) %>
<% end %>

Per altro, essendo in Ruby ti confesso che usare gli array in questo
modo, non mi fa impazzire. Preferisco di gran lunga

@posts.each do |post|

end

Ma questa è una cosa mia stilistica. Non dimentichiamo inoltre che se
usiamo dei partial per renderizzare, possiamo passare direttamente tutto
tramite il parametro :collection.


blog: http://www.akropolix.net/rik0/blogs | Enrico F.
site: http://www.akropolix.net/rik0/ | RiK0
forum: http://www.akropolix.net/forum/ | Linux Counter: #299198

Grazie, in definitiva mi resta l’errore
can’t convert Contact into String

io inoltre vorrei poter visualizzare l’intero elenco dei risultati non
come testo, ma elencando proprio i campi della tabella contacts e
inserendo a fianco di ciascuno i links alle varie azioni del
CRUD…sapete per caso come si fa? Grazie…

Alessio C. wrote:

Devi usare

 @surnames = Contact.find_all_by_surname(params[:contact][:surname])

2006/7/23, Giovanno Z. [email protected]:

L’ho fatto, eseguendo una ricerca mi dà la pagina di errore che inizia
ora così :

Showing app/views/contact/my_search.rhtml where line #8 raised:

undefined method `each’ for #Contact:0x388bac8

come mai secondo te, cosa mi manca (oltre a essere un bravo
programmatore?)

la ricerca corretta è
@surnames = Contact.find_all_by_surname(params[:contact][:surname])
che resituisce un array a differenza di
@surnames = Contact.find_by_surname(params[:contact][:surname])
che restituisce solo il primo riscontro.

Ciao

Alessio
Jabber(GTalk): [email protected]

“Il sapere umano appartiene al mondo”
–Skullbox, Synapse

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs