Rails: Scaffold pour faire automatiquement une relation un-à-plusieurs
Ne sais pas si je suis en train de lire cette droit, mais il semble que l'Échafaudage ne vais pas faire une un-à-beaucoup de relation dans son ensemble. Par exemple, si je crée messages
d'échafaudage et puis je veux comments
sur ces messages
(un message
-> beaucoup de comments
), je dois aller à travers et tout changer. Par exemple, je dois le changer dans la comment
's new
vue
<% form_for(@comment) do |f| %>
à ce
<% form_for([@message, @comment]) do |f| %>
et ensuite modifier l'Action à configurer le @message
var... entre autres choses.
Ce ne peut actuellement pas être fait automatiquement avec Échafaudage, droit?
source d'informationauteur Dan Rosenstark | 2009-02-02
Vous devez vous connecter pour publier un commentaire.
Ce qui est vrai, mais ce n'est pas la fin de l'histoire. Il y a au moins deux solutions de rechange à l'Échafaud que les deux fonctionnent très bien et récupérer automatiquement sur les relations entre les classes (en fonction de votre ActiveRecord relation des indicateurs comme has_many). L'une de ces alternatives est Rationalisé et l'autre est ActiveScaffold.
Ils sont principalement utile pour entrer des données que votre système nécessite que l'utilisateur n'est pas entré des données. Par exemple, je les utilise pour les tâches d'administration sur les tables où il n'y a aucun point dans la construction d'une INTERFACE utilisateur complet pour CRUD quand l'un de l'échafaudage alternatives va faire le travail tout aussi bien pour un rarement utilisé la fonction. Vous ne voulez pas les utiliser pour des commentaires sur les messages.
Oui. Échafaudage travaille pour un modèle et liées contrôleur. Il ne prend pas en charge ou de travail avec des relations.
De l'échafaud premier objectif est d'obtenir CRUD passe d'un modèle à l'aide d'un contrôleur et de vues. C'est tout. Toute autre exigence des relations doit être codées manuellement.
Noter qu'il y a des projets comme Hobo pour les Rails qui vous permettent de garder vos champs et des associations dans le modèle lui-même. Vous ne pouvez pas échafaudage associations, mais il est assez proche.
Vous finissez par payer pour ce sucre par le fait d'avoir beaucoup plus de l'application construite derrière votre dos. Au lieu de roulement de votre propre, vous êtes habituellement en soustrayant ce que vous avez besoin à partir d'une grande banque de comportements prédéfinis.
Échafaudages sont des échafaudages. Lorsque vous voulez autre chose qu'un CRUD sur une table (qui est ce que l'échafaudage est/ne), vous devez modifier le générés échafaudage code, ou rouler vos propres.
Vous n'avez pas besoin d'un lourd rails admin cadre pour obtenir un-à-plusieurs relations de travail.
Vous pouvez utiliser un échafaudage pour obtenir la plupart de la façon dont il.
Un peu plus de travail dans le contrôleur et _form vue d'obtenir le reste de la voie.
Voici comment...
En supposant que nous avons un bières table:
Et un développeurs table a une clé étrangère (beer_id) faisant référence aux bières de table:
Nous pouvons utiliser des échafaudages pour créer deux tables:
L'échafaud commande crée les contrôleurs et les vues pour chaque modèle.
Nous devrons modifier nos contrôleurs et les vues un peu pour obtenir le menu déroulant pour sélectionner une bière pour chaque développeur:
app/views/développeurs/_form.html.erb
Remplacer le générés text_field et de l'étiquette de l'beer_id avec les éléments suivants:
app/controllers/developer_controller.rb
Modifier le contrôleur et les nouvelles méthodes de modification:
Captures D'Écran
Notes
Rails échafaudage est grande. Regardez tous les fichiers qu'il crée pour vous:
Tout ce que vous avez à faire est de savoir quels sont les fichiers à modifier quand vous le voulez de la plus élémentaire des opérations CRUD.
Espère que ça aide.
~ Lex