Dropdown list

Salve a tutti,

premesso che sono alle prime armi e che provengo da asp.net (del quale
sono molto esperto) ho bisogno del vostro aiuto per il seguente
problema:

Devo creare un form di ricerca, con un dropdown list, e bottone.

Una volta premuto il bottone, devo eseguire la ricerca e mostrare i
risultati.

Ecco il codice di ricerca contenuto nel list.rhtml

<% form_tag :action => “search” do %>
Progetto: <%= collection_select(‘ticket’, ‘project_id’, @projects,
‘id’, ‘name’) %>
<%= submit_tag “Cerca” %>
<% end %>

Mentre questa è la definizione search contenuta nel controllo.

def search
@temp = Ticket.find(:all,:conditions => [“project_id = ?”,
params[:project_id]])
if @temp.lenght > 0
@ticket_pages, @tickets = paginate @temp, :per_page => 10
@projects = Project.find :all
flash[:notice] = ‘Ricerca completata.’
else
flash[:notice] = ‘Non sono stati trovati ticket associati al
progetto selezionato.’
end
redirect_to :action => ‘list’
end

Mi spiace disturbarvi, ma purtroppo, in rete ho grosse difficoltà nel
ricercare questi tipi di how-to.

Grazie mille in anticipo
Ventura

scusa ma non ho capito cosa ti manca, a prima vista il codice sembra ok,
ah
magari al posto di if @temp.lenght > 0 usa anche solo if @temp o if
!@temp.empty? o almeno io uso queste e mi sembrano un più belle :]

cmq se ti manca la parte della vista basta che scrivi una cosa del tipo

<% for ticket in @tickets %>
<%= ticket.FIELD_NAME %>
<% end %>

Saluti Andrea

----- Original Message -----
From: “Ventura” [email protected]
To: [email protected]
Sent: Monday, January 22, 2007 8:32 PM
Subject: [ruby-it] Dropdown list

def search
redirect_to :action => ‘list’


ciao, scusami per la poca chiarezza,

dapprima non riuscivo a reperire il valore per eseguire la query, ora ci
sono riucito usando:

def search
@temp = Ticket.find(:all,:conditions => [“project_id = ?”,
params[:search][:project_id]])
@projects = Project.find :all
if !@temp.empty?
26 @ticket_pages, @tickets = paginate @temp, :per_page => 10
flash[:notice] = ‘Ricerca completata.’
else
flash[:notice] = ‘Non sono stati trovati ticket associati al
progetto selezionato.’
end
render :action => ‘list’
end

ora il problema è che non riesco a fare il paginate, cioè ho il seguente
errore:

NameError in TodoController#search

“#Ticket:0x3132e48” is not a valid constant name!

/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/inflector.rb:247:in
constantize' /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.0/lib/active_support/core_ext/string/inflections.rb:148:inconstantize’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/pagination.rb:195:in
paginator_and_collection_for' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/pagination.rb:130:inpaginate’
#{RAILS_ROOT}/app/controllers/todo_controller.rb:26:in `search’

c’e’ qualche workaround?

problema risolto con:

@tickets = Ticket.find(:all,:conditions => ["project_id = ?", 

params[:search][:project_id]])
@projects = Project.find :all
@ticket_pages = Paginator.new self, @tickets.size, 10
if !@tickets.empty?
if @tickets.size == 1
flash[:notice] = ‘Ricerca completata.
’ +
@tickets.size.to_s + ’ record trovato.’
else
flash[:notice] = ‘Ricerca completata.
’ +
@tickets.size.to_s + ’ record trovati.’
end
else
flash[:notice] = ‘Non sono stati trovati ticket associati al
progetto selezionato.’
end
render :action => ‘list’

grazie a tutti

penso che l’ errore stia nel fatto che tu gli passi una variabile di
istanza
@temp e non un modello.

@ticket_pages, @tickets = paginate :ticket, :per_page => 10, :conditions
=>
[“project_id = ?”, params[:search][:project_id] ]

cmq anche per me all’ inizio è stato davvero poco chiaro il paginate

Saluti Andrea

----- Original Message -----
From: “Ventura V.” [email protected]
To: [email protected]
Sent: Monday, January 22, 2007 10:18 PM
Subject: [ruby-it] Re: Dropdown list

26 @ticket_pages, @tickets = paginate @temp, :per_page => 10

/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/pagination.rb:130:in
paginate' #{RAILS_ROOT}/app/controllers/todo_controller.rb:26:in search’

c’e’ qualche workaround?


Posted via http://www.ruby-forum.com/.


secondo me hai fatto un casino :stuck_out_tongue:

con la stringa che ti ho dato dovresti far meglio no?
o almeno io mi son trovato molto bene.

----- Original Message -----
From: “Ventura V.” [email protected]
To: [email protected]
Sent: Monday, January 22, 2007 10:43 PM
Subject: [ruby-it] Re: Dropdown list

 else


Posted via http://www.ruby-forum.com/.


Grazie stb,

solo una cosa, quando cambio pagina va in errore

NoMethodError in TodoController#search

You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]
RAILS_ROOT: /Users/DAddYE/Documents/RubyOnRails/ToDo/public/…/config/…

Application Trace | Framework Trace | Full Trace
#{RAILS_ROOT}/app/controllers/todo_controller.rb:24:in `search’

e la riga 24 corrisponde a @ticket_pages, @tickets = paginate :ticket,
:per_page => 10, :conditions
=>
[“project_id = ?”, params[:search][:project_id] ]

Grazie mille di tutto, ma queste tips veramente sono difficili da
reperire

Si infatti i params sono vuoti…

bisognerebbe usare qualcosa di simile

<% search_params = @params[:search].collect {|k,v|
[“search[#{k.to_s}]”, v]}.flatten.to_h %>

ma non ho idea di come si applichi al mio caso.

http://wiki.rubyonrails.com/rails/pages/PaginationHelper

Spero che col tempo le cose migliorino… vorrei lasciare
definitivamente asp.net

stb wrote:

bho vista cos’ mi sembra ok ma potrei sbagliarmi, cmq hai controllato
che
params[:search][:project_id] non sia vuota?

cmq non è che sti tips son difficili da trovare è che all’ inizio rails
è un
macello :]

Saluti Andrea

----- Original Message -----
From: “Ventura V.” [email protected]
To: [email protected]
Sent: Monday, January 22, 2007 11:01 PM
Subject: [ruby-it] Re: Re: Dropdown list


Posted via http://www.ruby-forum.com/.


bho vista cos’ mi sembra ok ma potrei sbagliarmi, cmq hai controllato
che
params[:search][:project_id] non sia vuota?

cmq non è che sti tips son difficili da trovare è che all’ inizio rails
è un
macello :]

Saluti Andrea

----- Original Message -----
From: “Ventura V.” [email protected]
To: [email protected]
Sent: Monday, January 22, 2007 11:01 PM
Subject: [ruby-it] Re: Re: Dropdown list


Posted via http://www.ruby-forum.com/.


bhe scusa ma se hai pochi parametri prendili direttamente, controlla i
field della vista che per esempio tra un text_field e un text_field_tag
cambia la sintassi, probabilmente stai sbagliando una cosa del genere

Saluti Andrea

Ventura V. wrote:

Si infatti i params sono vuoti…

bisognerebbe usare qualcosa di simile

<% search_params = @params[:search].collect {|k,v|
[“search[#{k.to_s}]”, v]}.flatten.to_h %>

ma non ho idea di come si applichi al mio caso.

Peak Obsession

Spero che col tempo le cose migliorino… vorrei lasciare
definitivamente asp.net


oppure:

flash.now[:notice] = “Hello current action”

che vale solo per la action corrente :slight_smile:

On 1/23/07, Matteo V. [email protected] wrote:

    flash[:notice] = 'Ricerca completata. <br />' +

<% if @tickets.size == 0 %>
Nessun risultato trovato
<% else %>

<% end %>


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Paolo D.’
SeeSaw | Another point of view

[email protected]
personal http://paolodona.blogspot.com

On 1/22/07, Ventura V. [email protected] wrote:

  else
    flash[:notice] = 'Ricerca completata. <br />' +

@tickets.size.to_s + ’ record trovati.’
end
else
flash[:notice] = ‘Non sono stati trovati ticket associati al
progetto selezionato.’
end
render :action => ‘list’

grazie a tutti

Giusto per puntualizzare: flash[:notice] si usa quando devi passare un
messaggio attraverso una redirect. In questo caso giustamente hai
tolto la redirect, che non c’entrava nulla visto che stai facendo un
metodo da chiamare con GET e non con POST. Quindi il tuo messaggio
puoi passarlo con una semplice variabile tipo @message.

Ancora meglio, il testo del tuo messaggio tienilo nella view, tipo

<% if @tickets.size == 0 %>
Nessun risultato trovato
<% else %>

<% end %>

quanto siete puntigliosi dasdassda

----- Original Message -----
From: “Paolo Donà” [email protected]
To: “ruby-it” [email protected]
Sent: Tuesday, January 23, 2007 9:02 PM
Subject: Re: [ruby-it] Re: Dropdown list