Salve. Ho una tabella con una colonna booleana ‘visible’. Per esercizio
sto cercando di paginarla mostrando un checkbox per ogni entry, checked
o unchecked a seconda se visible è true o false (questo controllo lo
farò dopo con un if, per ora mi limito a scrivere il checkbox). Per la
paginazione sto usando will_paginate.
In teoria, se uso un solo form per una collezione, passando oggetto[]
all’helper del checkbox, questo dovrebbe venir scritto con dentro l’id.
Ma invece mi esce un errore del tipo:
ArgumentError
object[] naming but object param and @object var don’t exist or don’t
respond to id_before_type_cast: nil
Il codice che sto usando nella view:
<% form_tag do%>
<% @entries.each do |e| -%>
<%= e.date -%>
<%= e.title -%>
<%= e.content -%>
<%= check_box( “e[]”,“visible”) -%>
<% end -%>
<%= submit_tag %>
<% end %>
Ecco, qualcuno sa perché mi genera un errore? Forse c’entra
will_paginate?
Inutile dire che senza la riga del checkbox, funziona tutto benone…
Hola!
Luca R. wrote:
Salve. Ho una tabella con una colonna booleana ‘visible’. Per esercizio
…
Il codice che sto usando nella view:
<% form_tag do%>
<% @entries.each do |e| -%>
<%= e.date -%>
<%= e.title -%>
<%= e.content -%>
<%= check_box( “e[]”,“visible”) -%>
<% end -%>
<%= submit_tag %>
<% end %>
…
Non ho tempo per verificare, ma puo’ darsi che check_box si aspetti una
variabile @e, che non trova.
Prova qualcosa tipo
<%= @e=e
check_box( “e[]”,“visible”) -%>
Ciao
Massimo
Hai ragione, funziona!
non ho capito bene la meccanica però…
-
Come mai nel resto del codice, ‘e’ viene rilevato e dentro check_box
no? Lo scope sembrerebbe il medesimo…
-
E come mai dopo aver salvato ‘e’ in @e, a check_box passo ancora ‘e’
e non @e? Infatti se passo @e mi restituisce un errore.
Quando hai tempo, e se hai voglia… 
Grazie ancora!
maner never wrote:
Luca R. wrote:
Salve. Ho una tabella con una colonna booleana ‘visible’. Per esercizio
…
Il codice che sto usando nella view:
<% form_tag do%>
<% @entries.each do |e| -%>
<%= e.date -%>
<%= e.title -%>
<%= e.content -%>
<%= check_box( “e[]”,“visible”) -%>
<% end -%>
<%= submit_tag %>
<% end %>
…
Non ho tempo per verificare, ma puo’ darsi che check_box si aspetti una
variabile @e, che non trova.
Prova qualcosa tipo
<%= @e=e
check_box( “e[]”,“visible”) -%>
Ciao
Massimo
Grazie! Mi hai dato anche un ulteriore modo per capire un po’ di cose.
Io arrivo da Javascript/ActionScript 2.0, e con Ruby non ho ancora molto
feeling… 
Buona giornata!!!
maner never wrote:
Luca R. wrote:
Hai ragione, funziona!
non ho capito bene la meccanica però…
-
Come mai nel resto del codice, ‘e’ viene rilevato e dentro check_box
no? Lo scope sembrerebbe il medesimo…
-
E come mai dopo aver salvato ‘e’ in @e, a check_box passo ancora ‘e’
e non @e? Infatti se passo @e mi restituisce un errore.
Quando hai tempo, e se hai voglia… 
Grazie ancora!
Alla funzione check_box() non passi la variabile locale e , ma la
stringa “e[]”.
L’implementazione di check_box() poi, suppone che esista una variabile
di istanza con lo stesso nome, ovvero @e.
Se guardi in ActionView::Helpers::FormHelper trovi:
def object
@object || (@template_object.instance_variable_get("@#{@object_name}")
rescue nil)
end
Da cui puoi vedere che @ e’ gia’ cablato e non lo devi passare
(altrimenti si raddoppia, e diventa @@e)
Luca R. wrote:
Hai ragione, funziona!
non ho capito bene la meccanica però…
-
Come mai nel resto del codice, ‘e’ viene rilevato e dentro check_box
no? Lo scope sembrerebbe il medesimo…
-
E come mai dopo aver salvato ‘e’ in @e, a check_box passo ancora ‘e’
e non @e? Infatti se passo @e mi restituisce un errore.
Quando hai tempo, e se hai voglia… 
Grazie ancora!
Alla funzione check_box() non passi la variabile locale e , ma la
stringa “e[]”.
L’implementazione di check_box() poi, suppone che esista una variabile
di istanza con lo stesso nome, ovvero @e.
Se guardi in ActionView::Helpers::FormHelper trovi:
def object
@object || (@template_object.instance_variable_get("@#{@object_name}")
rescue nil)
end
Da cui puoi vedere che @ e’ gia’ cablato e non lo devi passare
(altrimenti si raddoppia, e diventa @@e)