2009-12-04 6 views
0

Comment puis-je définir une relation entre deux contrôleurs. J'ai un contrôleur appelé manèges et un autre appelé inscrit. Y at-il de toute façon que je peux accéder à la base de données du registrant à partir du contrôleur de manèges? Je pensaisRelation entre 2 contrôleurs

@registrant = Registrant.find(:first) 

à partir de manèges, mais cela n'a pas fonctionné. Des suggestions?

Merci

+0

Vous pouvez accéder à n'importe quel modèle depuis n'importe quel contrôleur. Le code ci-dessus devrait fonctionner. Aussi, je suppose que vous vouliez dire une table d'enregistrement, pas une base de données d'enregistrement. –

+0

La ligne ci-dessus devrait juste récupérer le premier inscrit. Alors que voulez-vous dire: "mais ça n'a pas marché". Vous avez un message d'erreur? Voulez-vous rediriger vers ou afficher la vue du registrant? Vous n'avez pas pu atteindre le registrant depuis la vue des attractions? S'il vous plaît, expliquez. – nathanvda

Répondre

2

Vous pouvez accéder à votre modèle inscrit à partir de votre contrôleur manèges tout comme l'accès de tout autre contrôleur. Que voulez-vous dire par Registrant.find(:first) ne fonctionne pas? Maintenant, s'il existe une relation (ou association comme elle est normalement appelée) entre votre modèle de manèges et votre modèle de registrant (comme une association has_many), vous pouvez utiliser des ressources imbriquées pour imbriquer un contrôleur dans un autre.

Consultez les guides Action Controller Overview et Rails Routing from the Outside In et pensez à choisir un bon livre sur Rails comme Agile Web Development with Rails.

+0

Eh bien, il se trouve que je viens d'avoir une erreur de capitalisation et il arrivait au modèle de titulaire bien! Merci pour l'aide en tout cas! –

0

Si vous avez défini les modèles: tour et inscrit (ou plus utilisateur général), vous pouvez configurer un before_filter sur le contrôleur manèges:

before_filter :get_user 

def get_user 
    @user = User.find(:first, :conditions => %Q(userid = "#{params[:user_id]}")) 
end 

Ce atteindraient le l'utilisateur user_id passé en paramètre avant que le contrôleur génère la vue.

+1

Cela ne semble pas répondre à sa question et plus simplement vous pourriez faire 'User.find (params [: user_id]' ou ai-je manqué quelque chose? –

+0

Oups, raté un parent juste là. –

0

Oui, cela devrait fonctionner. Pour obtenir la terminologie correcte, vous accédez au modèle Registrant à partir de RidesController. Ils devraient tous deux être dans la même base de données, mais dans des tables séparées.

Veuillez poster le message d'erreur que vous obtenez.

Questions connexes