Forum: Italian Ruby user group Form e remote

Posted by Andrea Ranaldi (mdrew)
on 2012-07-02 17:36
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. E` il dott. Alzheimer che mi ha
raggiunto anzitempo o qualcosa e` cambiato negli ultimi rails?

Grazie a tutti
Andrea
Posted by Sante Rotondi (Guest)
on 2012-07-02 17:46
(Received via mailing list)
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
Posted by Alessandro R. (alessandro_r)
on 2012-07-02 17:51
(Received via mailing list)
Ma viene eseguito il codice in format.js {..}?
hai anche l'istruzione format.html?
In ogni caso posta il codice

2012/7/2 Sante Rotondi <saten.r@gmail.com>
Posted by Andrea Ranaldi (mdrew)
on 2012-07-03 11:08
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 Rotondi <saten.r@gmail.com>

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
Posted by Alessandro R. (alessandro_r)
on 2012-07-03 12:41
(Received via mailing list)
format.js {
    render :update do |page|
            page.replace_html "container_id", :partial => 'purr'
          end
}
Posted by Alessandro R. (alessandro_r)
on 2012-07-03 12:45
(Received via mailing list)
dove il container_id  l'id dell'elemento all'interno del quale deve 
essere
renderizzato il tuo partial.
Posted by Andrea Ranaldi (mdrew)
on 2012-07-03 13:46
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 :)

Andrea detto Willy l'Orbo.
Posted by Alessandro R. (alessandro_r)
on 2012-07-03 13:53
(Received via mailing list)
direi che allora il problema  nella form. puoi inviare il codice della
pagina che contiene la form?

2012/7/3 Andrea Ranaldi <andrea.ranaldi@gmail.com>
Posted by Andrea Ranaldi (mdrew)
on 2012-07-03 14:21
Ho copiato tutta la pagina ma il form e` nelle righe 18-21

http://pastebin.com/egtBF12z
Posted by Marco Mastrodonato (marcomd)
on 2012-07-03 14:31
Non può essere remote un multipart true, hai controllato il codice 
generato?
Posted by Alessandro R. (alessandro_r)
on 2012-07-03 14:35
(Received via mailing list)
esattamente.

On Tue, Jul 3, 2012 at 2:31 PM, Marco Mastrodonato 
<m.mastrodonato@gmail.com
Posted by Andrea Ranaldi (mdrew)
on 2012-07-03 14:49
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
Posted by Andrea Ranaldi (mdrew)
on 2012-07-06 16:25
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 :D

Andrea
Posted by Matteo Collina (Guest)
on 2012-07-09 10:34
(Received via mailing list)
Ciao Andrea,

Non posso che consigliarti https://github.com/gucki/plupload-rails.

Probabilmente  la migliore del genere :).

Matteo
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.