2010-12-10 4 views
0

Censé vous avez un utilisateur qui logined, et a certains attributs - nom, surnom, disciples, etc qui est stocké dans le back-endLe maintien d'un « miroir » javascript de votre objet utilisateur

Vous utilisez ces attributs largement dans l'affichage javascript, et avoir un objet miroir en javascript serait très utile.

Comment voulez-vous faire cela? Je suis sûr que c'est un problème très commun.

Répondre

1

Jetez un oeil à the js-data-helper plugin, qui vous donne des rails auxiliaires qui déversent des attributs de données dans des éléments DOM.

Il n'a pas été mis à jour depuis un moment, mais il a beaucoup de fonctionnalités et est bien documenté. Aussi, si vous voulez aller avec une solution personnalisée, vous pouvez obtenir des pointeurs en voyant comment cela se fait avec ce plugin.

+0

ce plugin est très bien, mais pourrait être trop compliqué pour mes besoins. mais vous avez raison, il me donne beaucoup d'idées pour la conception d'une version simple et personnalisée –

+0

Cool, juste faire attention au stockage des tableaux et des hachages. Ceux-ci peuvent être difficiles à convertir parfois. – bowsersenior

0

Stockez-le dans une collection de hachage globale, en plaçant du javascript dans 'views/layouts/application.html.erb'.

Ce serait ma conjecture =)

+0

c'est ce que je fais maintenant, mais il est trop difficile à maintenir et à garder cohérent –

2

Voici une manière que vous pourriez le faire. Votre fichier application.js peut effectuer un appel AJAX à un contrôleur User qui renvoie @current_user sérialisé à JSON.

var currentUser; 

var success = function(user) { 
    currentUser = user; 
} 

$.get("https://stackoverflow.com/users/current/", success); 

Dans votre contrôleur:

def current 
    respond_to do |format| 
    format.js { render :json => @current_user } 
    end 
end