[rails] mostrare checkbox in collezioni ( e will_paginate?)

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ò…

  1. Come mai nel resto del codice, ‘e’ viene rilevato e dentro check_box
    no? Lo scope sembrerebbe il medesimo…

  2. 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… :stuck_out_tongue:

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… :stuck_out_tongue:

Buona giornata!!!

maner never wrote:

Luca R. wrote:

Hai ragione, funziona!
non ho capito bene la meccanica però…

  1. Come mai nel resto del codice, ‘e’ viene rilevato e dentro check_box
    no? Lo scope sembrerebbe il medesimo…

  2. 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… :stuck_out_tongue:

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ò…

  1. Come mai nel resto del codice, ‘e’ viene rilevato e dentro check_box
    no? Lo scope sembrerebbe il medesimo…

  2. 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… :stuck_out_tongue:

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)