Passare una variabile da js ad un blocco ERB: E' possibile?


#1

Salve a tutti,

In risposta ad una chiamata AJAX ho una view “js.erb” che ha un codice
simile:

$(’#order_update_quantity’).html("<%= escape_javascript(render(:partial
=> ‘shared/update_order_quantity’, :locals => { :order => @order, :row
=> @order.order_rows.find( row_id ) })) %>");

dove “row_id” è una variabile assegnata da js.

Ovviamente, il tutto non funziona. Quello che mi chiedo è se sia
possibile passare al volo il valore di una
variabil ad un blocco ERB.

Grazie per il Vs aiuto.


#2

2009/3/13 Carmine M. removed_email_address@domain.invalid:

Ovviamente, il tutto non funziona. Quello che mi chiedo è se sia
possibile passare al volo il valore di una
variabil ad un blocco ERB.

temo proprio di no: l’erb (ma vale anche per rjs) viene interpretato
dal server, e solo alla fine il javascript viene eseguito dal client.

ma stiamo parlando di una chiamata ajax: perché non passi quella
variabile come parametro?

pietro


#3

Pietro G. wrote:

temo proprio di no: l’erb (ma vale anche per rjs) viene interpretato
dal server, e solo alla fine il javascript viene eseguito dal client.

già , chissà perchè mi ostinavo a rigettare la realtà :slight_smile:

ma stiamo parlando di una chiamata ajax: perch� non passi quella
variabile come parametro?

Il fatto è che sto utilizzando un plugin jQuery per l’inplace editing
che non mi consente di
passare quella variabile come parametro aggiuntivo.
Inoltre, ho una route che prevede due parametri:

  • L’id dell’ordine
  • L’id della riga relativa all’ordine

Mi secca dover modificare la route (e di conseguenza l’action), ma se è
l’unica alternativa…

Intanto, grazie 1000 per il supporto


#4

Il 13 marzo 2009 10.05, Carmine M. removed_email_address@domain.invalid ha
scritto:

che non mi consente di
passare quella variabile come parametro aggiuntivo.

non so quale sia questo plugin, quindi parlo alla cieca, ma forse la
cosa più semplice è crearti un tuo helper copiando e modificando
quello che usi ora.

Inoltre, ho una route che prevede due parametri:

  • L’id dell’ordine
  • L’id della riga relativa all’ordine

Mi secca dover modificare la route (e di conseguenza l’action), ma se è
l’unica alternativa…

scusami, perché devi modificare la route? in una richiesta post (sia
ajax che non) puoi passare tutti i parametri che vuoi a prescindere
dalla route…

se la variabile js (row_id?) va usata nell’url della richiesta ajax,
costruisci l’url via javascript, tipo ‘/prova/’ + row_id.

io ho avuto di questi problemi fintanto che mi ostinavo a usare sempre
e solo gli helper rails, tipo link_to_remote; ora, quasi sempre,
faccio la richiesta ajax direttamente da js, almeno quando non so in
partenza (lato server) tutto quello che devo sapere per costruire la
richiesta…

pietro


#5

Pietro G. wrote:

Mi secca dover modificare la route (e di conseguenza l’action), ma se è
l’unica alternativa…

scusami, perché devi modificare la route? in una richiesta post (sia
ajax che non) puoi passare tutti i parametri che vuoi a prescindere
dalla route…

E’ vero ho detto una cazzata…

se la variabile js (row_id?) va usata nell’url della richiesta ajax,
costruisci l’url via javascript, tipo ‘/prova/’ + row_id.

…perchè partivo dal fatto di non voler rinunciare alla chiamate tipo:

xxxx_path(…)

io ho avuto di questi problemi fintanto che mi ostinavo a usare sempre
e solo gli helper rails, tipo link_to_remote; ora, quasi sempre,
faccio la richiesta ajax direttamente da js, almeno quando non so in
partenza (lato server) tutto quello che devo sapere per costruire la
richiesta…

Infatti, con questo approccio il problema non si presenta proprio.
Anche io ho eliminato tutte le varie “link_to_remote” sostituendole con
le richieste fatte
direttamente dal lato js.

Bene, intanto, ho risolto.

Grazie ancora!