09-09-2010, 10:48 AM
(Modification du message : 10-09-2010, 10:54 AM par Sephi-Chan.)
Salut à tous,
J'aurais besoin de conseil sur un problème liant rails, ajax et une base de données.
J'affiche un tableau contenant des images, le type de l'image affiché dépend d'une donnée en base. Chaque cellule est ajoutées à ma liste d'objet Droppable.
A coté, j'ai une seconde liste d'image Draggable.
Le but étant de déposer une de ces images dans le tableau, mettre a jour ma base de données et rafraichir le tableau ensuite.
Pour le moment, j'ai réussi à faire ca en javascript sans ajax (c'est à dire que le réaffichage se fait après rechargement de la page).
Voici un peu de code:
le code pour créer les éléments droppables
le code de l'action appelée dans le ondrop
le reste du code est assez trivial.
Donc je me pose la question de savoir qu'est ce que je dois modifier pour ne plus à avoir à rafraichir l'affichage?
Si vous avez besoin d'autres morceaux de code, demandez moi.
Si vous trouvez le code bancal, n'hésitez pas, j'aime beaucoup la critique
J'aurais besoin de conseil sur un problème liant rails, ajax et une base de données.
J'affiche un tableau contenant des images, le type de l'image affiché dépend d'une donnée en base. Chaque cellule est ajoutées à ma liste d'objet Droppable.
A coté, j'ai une seconde liste d'image Draggable.
Le but étant de déposer une de ces images dans le tableau, mettre a jour ma base de données et rafraichir le tableau ensuite.
Pour le moment, j'ai réussi à faire ca en javascript sans ajax (c'est à dire que le réaffichage se fait après rechargement de la page).
Voici un peu de code:
le code pour créer les éléments droppables
Code :
<script type="text/javascript">
$$(".tile").each( function(dropElement) {
Droppables.add(dropElement.id,
{
accept: 'drag',
onDrop: function(dragged, dropped) {
tile_id = dropped.getAttribute('data-id');
type_id = dragged.getAttribute('data-id');
window.location = '../maps/receive_drop?tile_id='+
tile_id+'&type_id='+
type_id;
}
}
);
} );
</script>
Code :
def receive_drop
@map = Map.first
@tile = Tile.find_by_id(params[:tile_id])
@tile.update_attributes(:tile_type_id => params[:type_id])
redirect_to('/maps/index')
end
le reste du code est assez trivial.
Donc je me pose la question de savoir qu'est ce que je dois modifier pour ne plus à avoir à rafraichir l'affichage?
Si vous avez besoin d'autres morceaux de code, demandez moi.
Si vous trouvez le code bancal, n'hésitez pas, j'aime beaucoup la critique