2010-07-12 8 views
0

Mon extrémité arrière est mon serveur Rails qui envoie des données JSON à mon frontal. Au début, j'utilise javascript et jQuery qui traite mes données JSON et en affiche certaines.
Maintenant, l'utilisateur peut entrer un nombre en fonction des données qui lui sont affichées.
Ainsi, sur la base de l'entrée de l'utilisateur, certaines modifications sont apportées aux données JSON reçues plus tôt et renvoyées à mon back-end en tant que JSON correctement codé.Aide pour JSON dans les rails

Ma question est comment puis-je traiter ces données JSON sur le serveur et stocker les entrées remplies par l'utilisateur?

+0

Pourquoi devez-vous le renvoyer en tant que JSON? Transformez le JSON en une demande http POST, puis renvoyez-le. Rails sait déjà comment faire ça, et je suis plutôt sûr que ce n'est pas trop compliqué dans jQuery. – thomasfedb

+0

L'exposition de l'API JSON peut offrir une interface plus générale que la simple restauration d'une interface client basée sur un navigateur et parfois il est pratique de prendre en charge un seul type, surtout si le navigateur est fortement orienté AJAX. – bjg

Répondre

1

Je ne sais pas pourquoi vous auriez besoin d'envoyer les données vers JSON depuis Rails peut simplement gérer les données de formulaire normalement, comme il le dit thomasfedb. Mais si vous en avez vraiment besoin, vous pouvez utiliser la méthode jQuery serializeArray puis effectuer une conversion rapide de tableau en JSON. Voir les éléments suivants:

http://api.jquery.com/serializeArray/#comment-47479466

Si vous allez dans cette voie, vous pouvez utiliser la méthode stringify dans JSON2.js pour créer des données JSON valides à partir de votre objet.

http://www.json.org/js.html


modifié:

Désolé, vient de réaliser que vous avez déjà loin! Aurait dû lire la question correctement.

Vous pouvez utiliser ce JSON ruby implementation-parse les données JSON:

JSON.parse(json_data, {:symbolize_names => true}) 

puis il suffit d'utiliser la méthode de saveActiveRecord::Base pour sauver votre dossier.

+0

@joecardon: - J'ai des liens manquants. Je n'ai jamais fait cela avant d'envoyer des données au serveur au format JSON. J'ai essayé votre commande mais j'ai obtenu l'erreur suivante: JSON.parse ({"solutions": [{"name": "I"}, {"name": "On"}], "features": [{"name": "Composition"}]}) me donne une erreur : SyntaxError: erreur de compilation (RIR): 4: liste des numéros impairs pour Hash (RIR): 4: erreur de syntaxe, unexpected ':', expecting '}' MAIS, le JSON données sont valides. ..J'ai passé par http://www.jsonlint.com/ json parser et il renvoie valide json. –

+0

Vous devez transmettre les données JSON de votre formulaire à JSON.parse sous la forme d'une chaîne: JSON.parse ('{"key": "value", "another_key": 23}', {: symbolize_names => true} – joecorcoran

1

Supposons que vous avez utilisé JQuery.post() d'envoyer les données au serveur avec un dataType de 'JSON'

Ensuite, dans votre contrôleur, vous pouvez le faire:

MyController << ApplicationController 

    def my_action 
    @data = params[:data] // client data available as a Ruby Hash object 

    // Process data into @result (for example) 

    respond_to do |format| 
     format.json { render :json => @result.to_json } 
    end 
    end 

end 

Ou vous pouvez laisser le render instruction ci-dessus et fournir une vue (appelée my_action.json.erb) dans laquelle vous pouvez formater la réponse JSON.

+0

- Je suis incapable de comprendre ce que vous dites. Ma question est que je traite l'entrée de l'utilisateur d'une certaine manière et ensuite je dois renvoyer ces données au serveur où je peux traiter à nouveau et agir en conséquence. Le format de données dans lequel j'envoie des données au serveur est JSON. Je fais un appel à jQuery.post chez le client. –

+0

@Silver Spoon. Je pense que j'ai compris cela. Ce que j'ai montré est la logique côté serveur de contour pour traiter votre JSON entrant et répondre avec JSON au client. Y avait-il autre chose dont vous aviez besoin ici? – bjg