Semplice form_tag: giusto?


#1

Salve a tutti! Sono ancora qui a chiedervi una mano, sempre se possibile
aiutare un caso disperato come me!

Il mio scopo è : data una domanda con relative risposte associate a dei
bottoni radio, dare la possibilità all’utente di scegliere una risposta
e tramite pulsante verificare se la risposta è giusta o meno (al momento
non implementata del tutto…)

Il codice della view in questione (in questo caso di un vero e falso con
valori di prova…)

<% form_tag (:action => “verify” , :id => @question.id) do %>

<%= radio_button_tag :answer, 1, false %>
<%= @question.send(“r1”) %>
<% risposta = @question.send(“r1”) %>

<%= radio_button_tag :answer, 2, false %>
<%= @question.send(“r2”) %>
<% risposta = @question.send(“r2”) %>
<%= submit_tag “Verifica” %>
<% end %>

Il mio problema è che cliccando su il bottone “Verifica” non succede
nulla…ovvero fa una ricarica della pagina e non carica la pagina
“verify”.

Non sto qua a chiedervi se ho sbagliato qualcosa nel controller …ma
solo se secondo voi, anche con le poche informazioni che vi ho dato,
quello che ho scritto qua sopra nella view ha del senso!
Vi ringrazio!


#2

Non puoi controllare nel controller che metodo esegue?
Mi sembra corretto ma se posso darti un consiglio, userei qualcosa tipo:

<% form_for(@question, :url => verify_question_path(@question) ) ) do
|f| %>
<%= f.error_messages %>
<%= f.check_box(:answer) %>
<%= f.submit ‘Verifica’ %>
<% end %>

Non l’ho provato, è da verificare (le api online in questo momento hanno
il dominio ko) dovrai poi completarlo con le label e creare la route


#3

2009/4/23 Marco M. removed_email_address@domain.invalid

Non l’ho provato, è da verificare (le api online in questo momento hanno
il dominio ko)

Suggerimento OT. Potete usare: http://apidock.com/rails

Ciao,
Antonio

http://antoniocangiano.com - Zen and the Art of Programming
http://math-blog.com - Mathematics is wonderful!
http://stacktrace.it - Aperiodico di resistenza informatica
Follow me on Twitter: http://twitter.com/acangiano
Author of “Ruby on Rails for Microsoft Developers”:
http://bit.ly/rorforms


#4

Antonio C. wrote:

Suggerimento OT. Potete usare: http://apidock.com/rails

Fighissime queste api, grazie :wink:

La route:
map.resources :question, :member => { :verify=> :post }


#5

Grazie a tutti per le risposte!! Anche per le API on line visto che è
tutto oggi che tento di vedere le documentazioni e non ci riesco!
Proverò a breve (oggi no che dopo sei ore di elettronica sono un po’
fusa!) la procedura da Marco suggerita.
Il metodo “verify” dovrebbe (e dico dovrebbe) essere giusto : prende il
valore del button radio selezionato (value = params[:answer] ) e in base
a quello fa un ciclo if nel quale compara value restituendo alla view
una stringa.
Magari domani posto il codice…che è meglio.
Ma, con occhi da totale inesperta, mi sembra che il problema sia più
nella view che nel controller…
Grazie ancora di cuore!!


#6

Silvia M. wrote:

Il metodo “verify” dovrebbe (e dico dovrebbe) essere giusto : prende il
valore del button radio selezionato (value = params[:answer] ) e in base
a quello fa un ciclo if nel quale compara value restituendo alla view
una stringa.

Ciao, io ti consiglio comunque ti seguire (se puoi col debug) cosa
succede dopo il submit, non so che strumenti usi ma netbeans+fast
debugger+firefox+firebug sono strumenti essenziali e questo tipo di
problemi li risolvi autonomamente.
La view mi sembra corretta ma per esserne certi bisognerebbe controllare
l’output html, con firebug lo fai in un attimo.


#7

Silvia M. wrote:

Salve a tutti! Sono ancora qui a chiedervi una mano, sempre se possibile
aiutare un caso disperato come me!

Facciamo a gara a chi è più preso male?

Il codice della view in questione (in questo caso di un vero e falso con
valori di prova…)

<% form_tag (:action => “verify” , :id => @question.id) do %>

<%= radio_button_tag :answer, 1, false %>
<%= @question.send(“r1”) %>
<% risposta = @question.send(“r1”) %>

<%= radio_button_tag :answer, 2, false %>
<%= @question.send(“r2”) %>
<% risposta = @question.send(“r2”) %>
<%= submit_tag “Verifica” %>
<% end %>

Io ho una cosa del genere (l’operatore contatta il cliente e tra le
varie cose può segnare se il cliente ha bisogno di assistena o meno o se
passa in sede per chiedere cose più particolari; premendo il pulsante
viene salvato il valore selezionato e caricato il prossimo cliente)

<% form_tag :controller => ‘/agenda’, :action => ‘prossimo’, :id =>
@contatti.id do %>

Richiesta assistenza:
<%= radio_button( :contatti, :assistenza.to_s, value=“0” )%> No
  
<%= radio_button( :contatti, :assistenza.to_s, value=“1” )%> Da chiamare
  
<%= radio_button( :contatti, :assistenza, value=“2” )%> Passa in sede

... <%= submit_tag "Prossimo" %> <% end %>

Il mio problema è che cliccando su il bottone “Verifica” non succede
nulla…ovvero fa una ricarica della pagina e non carica la pagina
“verify”.

Se metti dei “puts qualcosa”, tanto per vedere se almeno entra in
“verify” e comincia a fare qualcosa?


#8

Marco M. wrote:

Silvia M. wrote:

Il metodo “verify” dovrebbe (e dico dovrebbe) essere giusto : prende il
valore del button radio selezionato (value = params[:answer] ) e in base
a quello fa un ciclo if nel quale compara value restituendo alla view
una stringa.

Ciao, io ti consiglio comunque ti seguire (se puoi col debug) cosa
succede dopo il submit, non so che strumenti usi ma netbeans+fast
debugger+firefox+firebug sono strumenti essenziali e questo tipo di
problemi li risolvi autonomamente.
La view mi sembra corretta ma per esserne certi bisognerebbe controllare
l’output html, con firebug lo fai in un attimo.

WOW! Mi hai aperto un mondo!! Scusatemi davvero ma sono veramente
autodidatta (a parte voi che mi date sempre una pronta mano) e non avevo
nemmeno considerato l’idea di firebug, ad esempio, e ammetto che mi
vergogno un po’ di “studiare” informatica e avere così poca conoscenza!.
Adesso do un occhio ben approffondito a tutto il progetto…
Grazie ancora


#9

Marco M. wrote:

La route:
map.resources :question, :member => { :verify=> :post }

Credo che :question vada sostituito con :questions…vero?
No, perchè con :question ho dei problemi (uninitialized constant
QuestionController) ma con :questions non da errori.
Però in ogni caso non funziona ancora adesso il tutto…sempre lo stesso
problema, ovvero cliccando il pulsante “verifica” mi si aggiorna la
pagina.
E questo è l’url completo:
http://localhost:3000/questions/3?commit=Verifica&authenticity_token=5bfa31f4ad55ce03819e4e83744b18ee7a5a6449&answer=1.


#10

Silvia M. wrote:

Però in ogni caso non funziona ancora adesso il tutto…sempre lo stesso
problema, ovvero cliccando il pulsante “verifica” mi si aggiorna la
pagina.

Ciao, dovresti controllare l’url del form, quel link non mi sembra
corretto, dovrebbe richiamare qualcosa tipo:
http://localhost:3000/questions/3/verify?ecc.

ti avevo messo un esempio di form sopra

fai anche un rake :routes e verifica la presenza di verify insieme gli
altri metodi di question