Ciao,
in rails 1.2 il modo consigliato per creare i form è usare “form_for”
e poi indicare con l’url e il metodo HTTP quello che deve succedere.
(Se non ho capito male.)
In altre parole il che corrisponde a “create” è diverso dal
form che fa un “update”. Il primo è un POST e il secondo un PUT.
Quindi, se voglio usare un partial condiviso per create/update,
questo
deve escludere il “form_for”.
Se chiamo form_for con un block - com’è kosher fare - il codice erb
nel partial non vive nello stesso scope del block (e perché no???),
ma
devo usare il parametro :locals nella chiamata a “render”.
Quindi, questo funziona:
<% form_for :channel, @channel, :url => channel_path(@channel), :html =>
{:meth
od => :put} do |f| %>
<%= render :partial => “form”, :locals => {:f => f}%>
<% end %>
E questo invece no:
<% form_for :channel, @channel, :url => channel_path(@channel), :html =>
{:meth
od => :put} do |f| %>
<%= render :partial => “form” %>
<% end %>
Sono solo io, o questo è un comportamento anti-DRY e anti-ruby??? il
“render(:partial)” vive nel block di “form_for()” e dovrebbe usare lo
stesso scope. Mi sembra proprio brutto dover usare :locals…

