web-dev-qa-db-fra.com

Pourquoi Rails 4 Scaffold crée-t-il des fichiers json.jbuilder?

J'ai généré un nouveau projet Rails 4 (rc1) à l'aide de Rails new et un échafaudage à l'aide de Rails g scaffold

Comme prévu, il a créé la migration, le contrôleur et tous les fichiers de vue requis.

Il a également créé show.json.jbuilder et index.json.jbuilder.

Je suppose que c'est pour aider la génération JSON à partir de modèles. Le contrôleur contient également des invocations format.json. 

Question: pourquoi a-t-il besoin de JSON et quelle partie de l’application générée utilise JSON? Il ne semble pas que (pour moi) les vues utilisent JSON pour restituer quoi que ce soit, il semble qu'elles soient restituées côté serveur (des variables @model sont utilisées dans les vues pour obtenir le contenu).

Les guides Edge ( http://edgeguides.rubyonrails.org/ ) ne voient pas mentionner jbuilder et pourquoi il est nécessaire de le faire.

Merci d'avance! S'il vous plaît laissez-moi savoir si je peux clarifier la question.

32
vrepsys

Pour répondre à la partie "pourquoi": 

La pertinence de l'échafaudage dans Rails a quelque peu changé au fil des ans. Il ne s'agit plus de générer le code nécessaire, qui ne pourrait pas être extrait facilement. Aujourd’hui, c’est surtout un outil éducatif qui vous fournit un exemple assez dynamique et qui présente les meilleures pratiques. (C’est aussi la raison pour laquelle ils sont parsemés de commentaires d’une utilité discutable)

En d'autres termes, les fichiers générés sont censés vous dire: 

Si vous allez utiliser Rails, voici une bonne façon de le faire.

ou dans votre cas particulier:

Si vous allez utiliser JBuilder, voici un bon moyen de générer du JSON.

Ils sont pas censés dire: "Voici comment cela doit être fait." ou "Vous devez garder tous les trucs générés parce que c'est nécessaire."

34
Daniel Rikowski

Comme indiqué précédemment, Rails 4 semble générer les fichiers comme un moyen d'avoir un modèle pour répondre à une requête JSON. Supposons donc que vous ayez "échafaudé" un modèle Car, qui répondra ensuite avec une page HTML et une vue détaillée de car (id 1) si vous passez /car/1.

Ensuite, si vous allez à /car/1.json, le fichier show.json.jbuilder sera rendu. Il semble également exister une sorte de mécanisme automatique puisque la méthode show est vide lors de l’échafaudage:

def show
end
19
Sebastian Wramba

Le générateur d'échafaudage Rails 4 crée des fichiers jbuilder car le gem 'Jbuilder' se trouve dans le Gemfile. Si vous supprimez ceci de votre Gemfile, cette fonctionnalité cessera.

14
Derek

Jbuilder gem inclus dans RoR 4 par défaut. Vous pouvez lire à ce sujet sur sa page. Il y a un casting à ce sujet: Railscasts # 320 .

10

De nos jours Angular ou des cadres similaires sont populaires ou si vous écrivez une API pour une application mobile. Cette vue de générateur JSON peut être utilisée. Là, nous n'utiliserons pas les vues Rails. Pour tout le reste, le JSON de l'API est devenu le format standard. Il est utile que les vues HTML et JSON soient créés automatiquement par l’échafaudage Rails.

0
Krishnadas PC