Form e remote

Ciao a tutti,

Sto impazzendo… Dovrebbe essere usa sciocchezza ma non riesco a
risolverla e non riesco a comprenderne il perche`:

Ho un form e vorrei farmi restituire un js che modifica un div, nulla di
perverso, ho aggiunto il :remote => true al form ma non va, mi risponde
sempre come html. Ho specificato il datatype js e pur leggendomi il
testo javascript il browser lo interpreta come fosse test. O forzato nel
controller il mime js ( format.js {:js => “azione”} ) ma comunque
testo rimane.

Mi ricordo di aver utilizzato il remote => true nei form in passato e mi
ricordo di non aver avuto problemi. Eil dott. Alzheimer che mi ha raggiunto anzitempo o qualcosa e cambiato negli ultimi rails?

Grazie a tutti
Andrea

Ciao Andrea

potresti dare qualche dettaglio in pi su:

versione di rails
se stai usando jquery
se stai usando il driver ujs

incollare un po’ di codice lato client e controller

Ma viene eseguito il codice in format.js {…}?
hai anche l’istruzione format.html?
In ogni caso posta il codice

2012/7/2 Sante R. [email protected]

format.js {
render :update do |page|
page.replace_html “container_id”, :partial => ‘purr’
end
}

Alessandro R. wrote in post #1067055:

Ma viene eseguito il codice in format.js {…}?
hai anche l’istruzione format.html?
In ogni caso posta il codice

2012/7/2 Sante R. [email protected]

Ecco tutte le informazioni:

Uso jquery
ruby: 1.9.3
rails: 3.2.5
controller:
def create
@attachment = @email.attachments.new(params[:attachment])

respond_to do |format|
  if @attachment.save
    format.js
  else
    @notice = "Errore nella creazione"
    format.js {render :partial => 'purr'}
  end
end

end

vista (create.js.haml)

$(‘#attachment ul’).append(‘#{escape_javascript(render(:partial =>
‘attachment’))}’);

dimenticavo il form

= form_for( [@campaign, @email, @attachment_new], :html => { :multipart
=> true}, :remote => true ) do |f|
= f.file_field :file
%span{:class => “fright”}
= f.submit

Alessandro R. wrote in post #1067162:

format.js {
render :update do |page|
page.replace_html “container_id”, :partial => ‘purr’
end
}

Ciao Alessandro,
Per sicurezza ho provato ma non va: con :update vado a generare del
codice javascript mentre il mio problema e` che mi esegue il form come
se non avessi inserito il :remote => true.
Riporto i log per completezza:


Started POST “/campaigns/2/emails/3/attachments” for 127.0.0.1 at
2012-07-03 13:33:59 +0200
Processing by AttachmentsController#create as HTML

Parameters {parametri}

{sql vario}

Completed 406 Not Acceptable in 526ms (ActiveRecord: 201.8ms)

406 esce in quanto io non ho creato un format.html quindi non e`
accettabile.
Se inserisco un format.html con un redirect ovviamente mi funziona tutto
correttamente.

Temo che il mio errore sia nel form ma non riesco a vedere dove sia :slight_smile:

Andrea detto Willy l’Orbo.

dove il container_id l’id dell’elemento all’interno del quale deve
essere
renderizzato il tuo partial.

direi che allora il problema nella form. puoi inviare il codice della
pagina che contiene la form?

2012/7/3 Andrea R. [email protected]

Ho copiato tutta la pagina ma il form e` nelle righe 18-21

Non può essere remote un multipart true, hai controllato il codice
generato?

esattamente.

On Tue, Jul 3, 2012 at 2:31 PM, Marco M.
<[email protected]

Cosi` si risolve l’arcano: nel codice generato dal form il data-remote
viene inserito correttamente ma viene ignorato il javascript dal browser
che non deve accedere ai dischi.

Facendo una ricerca con i termini giusti vengono fuori le risposte
giuste, ed e` un caso abbastanza comune, solitamente viene risolto con
iframe.

Grazie a tutti per l’aiuto
Andrea

Se qualcuno fosse interessato ho trovato questa splendida gemma

http://os.alfajango.com/remotipart/

cito

“The Remotipart gem enables AJAX file-upload capability to remote forms
in Rails 3 apps by extending the native jquery-ujs functionality.”

Nel sistema aggiungi poche righe di js, nella vista aggiungi normalmente
il remote true al form, lui si occupa di impacchettare e spedire tramite
iframe, per il resto c’e` mastercard :smiley:

Andrea

Ciao Andrea,

Non posso che consigliarti GitHub - gucki/plupload-rails: Integration of Plupload with the Rails asset pipeline.

Probabilmente la migliore del genere :).

Matteo