Allora, forse mi sto facendo noie per nulla, comunque chiedo. Dunque,
sto usando will_paginate, e l’helper check_box per il campo ‘visible’.
La view di admin/list:
<% form_tag :action => ‘update_entries’ do%>
<% @entries.each do |e| -%>
<% @e=e -%>
<%= e.date -%>
<%= e.title -%>
<%= e.content -%>
<%= check_box( ‘e[]’,‘visible’,{},true,false) %>
<% end -%>
<%= submit_tag %>
<% end %>
Quando spedisco il form, viene eseguito il seg. metodo:
def update_entries
Entry.update(params[:e].keys, params[:e].values);
redirect_to :action => ‘list’
end
Il quale effettivamente funziona e scrive nel db le variazioni. Quindi
tutto ok.
Ma quello che mi chiedo è:
- questo update, mi riscrive solo la colonna ‘visible’ o anche tutte le
altre? - E come faccio a fargli aggiornare solo le colonne delle righe che
sono state cambiate?
Leggendo nella console di Mongrel, sembrerebbe che sovrascrive tutte le
colonne di tutte le righe visibili in pagina, a prescindere. Infatti per
ogni riga trovo scritto:
Entry Load (0.001326) SELECT * FROM entries WHERE (entries.id = 9)
Entry Update (0.001142) UPDATE entries SET “visible” = ‘f’, “content”
= ‘contenuto 7’, “title” = ‘titolo 7’, “date” = ‘16-09-2007’ WHERE id =
9
Ho provato tra l’altro anche a cambiare update_entries in questo modo:
def update_entries
params[:e].each do |p|
row = Entry.find(p[0])
row.update_attribute(p[1].keys,p[1].keys)
end
redirect_to :action => ‘list’
end
Dalla quale mi aspettavo per lo meno che mi sovrascrivesse solo la
colonna ‘visible’, dato che p = [id, visible => true/false]. Ma Mongrel
scrive sempre le stesse, cose come sopra.
Qualcuno sa darmi dei suggerimenti?