Organiser une association pour qu'il y ait une relation plusieurs-à-plusieurs Comment obtenir des informations sur la table associée.
Langue: Ruby Prenons comme exemple l'application sur laquelle je travaille. J'ai fait une association plusieurs-à-plusieurs entre le CD et les chansons enregistrées dessus. Raison plusieurs-à-plusieurs: le CD contient plusieurs chansons. Le morceau peut être sur plusieurs CD.
Alors Créez une table un-à-plusieurs. Créez une table intermédiaire en même temps.
Basé sur ce tableau de disques J'ai préparé Viwe (show.haml.html) parce que je voulais faire une page détaillée pour chaque CD.
(URL▶︎localhost:3000/discs/1)
Exemple ①: Lorsque disc_id vaut 1
Informations que vous souhaitez obtenir / afficher: Morceaux liés au CD-A (morceau-A, morceau-B, morceau-C)
Exemple ②: Lorsque disc_id vaut 2
Informations que vous souhaitez obtenir / afficher: Morceaux liés au CD-B (morceau-A, morceau-D, morceau-E)
: point_right_tone1: Je veux aussi obtenir des informations à partir de tables liées! C'est l'objectif cette fois.
Si le titre de la chanson rose associé est également affiché sur la même page, il est réussi. Avez-vous compris ce que vous vouliez faire?
Ici, nous obtiendrons l'identifiant affiché dans l'URL. Par exemple, disc_id: 1. L'utilisateur peut indiquer qu'il veut des informations sur l'id: 1 CD.
discs_controller.rb
class DiscsController < ApplicationController
#réduction
def show
@disc = Disc.find(params[:id])
end
#réduction
end
ruby:show.html.haml(show.html.Pour erb, convertissez haml en html. )
- @disc.songs.each do |song|
= song.name
Pour le routage, mettez: show comme "resources: discs, only: [: show]".
Je pense que le point est la description en chevauchant la table.
ruby:show.html.haml(show.html.Pour erb, convertissez haml en html. )
- (params[:id]Variable obtenue).(Nom de la table associée que vous souhaitez gagner).each do |(Variables utilisées ci-dessous)|
=(Variables spécifiées ci-dessus).(Nom de la colonne que vous souhaitez afficher dans le tableau des revenus)
Je pensais que l'explication était de la merde, mais je l'ai écrite en détail.
Je pense que j'ai pu l'afficher ci-dessus. Je vous remercie pour votre travail acharné!
Je suis vraiment un débutant Actuellement, les mérites de former une association, Je n'ai pas compris les mérites d'avoir une relation parent-enfant. Cependant, cette fois, j'ai trouvé qu'en le rendant plusieurs-à-plusieurs, d'autres informations de table peuvent être récupérées même dans la vue liée à une seule table. J'ai remarqué que les informations de l'URL qui peuvent être reçues du client proviennent de "/ discs / 1", "/ discs / 1 / song", "discs / new", etc. De plus, dans le routage, je viens de remarquer que j'ai reçu des instructions de la table de source d'informations principale, que j'ai reçu les informations de viwe affichées et que j'ai pu décrire les informations extraites de la table avec le contrôleur.
Si quelqu'un qui est également préoccupé par les bases peut obtenir des indices à ce sujet, Cela devrait avoir du sens pour moi de trébucher ici! j'ai pensé Je l'ai enregistré ici comme un article pour moi qui trébucherai à nouveau au même endroit dans le futur. Merci d'avoir lu jusqu'au bout: détendu: A bientôt: vague: