2 votes

Comment construire un objet de vue dans Rails pour une utilisation JavaScript

Ce que j'essaie de faire est d'utiliser un décorateur (peut-être Draper ) pour construire un objet avant de le transmettre à mon code React (en utilisant la fonction React Rails gemme). Je peux facilement décorer un objet et utiliser les méthodes dans une vue, mais ce n'est pas possible si je passe un tableau par React props :

<%= react_component('Project', { name: project.name, choices: project.options %>

Je ne pourrai pas accéder au décor project.options.total dans mon code JavaScript.

Existe-t-il un autre moyen de construire ces objets ? J'utilisais Sérialiseurs de modèles actifs dans le passé, mais il ne s'agit pas d'une application à page unique, mais simplement d'un composant React dans une vue Rails.

0voto

Sebastian Points 1353

Une solution serait de créer une méthode qui ajoute les champs obligatoires à une chaîne JSON avant de la transmettre au composant React.

Je pense que j'ai réussi à trouver une solution plus propre en utilisant Sérialiseurs de modèles actifs . Vous créez un sérialiseur et construisez le JSON dans votre méthode de contrôleur :

@project_json = ActiveModelSerializers::SerializableResource.new(@projects).as_json

À titre d'information, l'ajout du current_user à ce sérialiseur peut être facilement réalisée en utilisant un scope :

ActiveModelSerializers::SerializableResource.new(@projects, scope: current_user, scope_name: :current_user).as_json

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X