Unobtrusive javascript ok, ma

Qualche volta non si puo’ fare a meno di mischiare javascript nelle
pagine html e a tal proposito trovavo molto utili le vecchie e ormai
deprecate istruzioni quali observe_field, ecc.
Facco un esempio sperando magari nel suggerimento di una soluzione
piu’ elegante:
ho due pagine che hanno lo stesso layout, in tale layout richiamo un
file js che contiene il seguente codice:

jQuery(document).ready(function($) {
$("#category_sector_id").observe_field(1, function() {
$.post(’/albo/filter_category_in_sector’, {sector_id:
$(’#category_sector_id’).val()}, function(data) {
$("#category_update").html(data);
});
});
});

Questo codice viene eseguito quando cambia il contenuto di questa
select_collection:

<%= collection_select “category”, :sector_id, @sectors, :id,
:name,…

Se nell’altra pagina, che condivide lo stesso layout ho la stessa
collection_select viene eseguito il codice contenuto nel js ma
anziche’ chiamare albo/filter_category_in_sector vorrei chiamare un
altro metodo.
L’unica soluzione mi pare quella di mettere il codice javascript
all’interno delle singole pagine, o no?

Se nell’altra pagina, che condivide lo stesso layout ho la stessa
collection_select viene eseguito il codice contenuto nel js ma
anziche’ chiamare albo/filter_category_in_sector vorrei chiamare un
altro metodo.
L’unica soluzione mi pare quella di mettere il codice javascript
all’interno delle singole pagine, o no?

io useri gli attributi “data-” per settare l’url, cos se ognuno ha il
suo.Invece di scrivere l’url a mano nella chiamata ajax, puoi scrivere
$(“#field”).attr(“data-url”).
Se invece all’interno di un form, prendi l’url del form.


Andrea F.