récupérer des données à partir de la base de données dans les rails?
J'ai deux tables sont appelées des événements et des formateurs dans mon projet.tableau des événements de contenir de l'entraîneur de l'id. J'ai un menu déroulant qui contient formateur nom comme suit.
<% form_tag "/events/find_trainer" do %>
<%= collection_select("event", "trainer", @trainers , :id, :name, {:prompt => true}) %>
<%= submit_tag "search" %>
<%end%>
puis j'ai créé find_trainer méthode de contrôleur pour récupérer les données de la table des événements.
def find_trainer
@events=Event.find(:all, :conditions=> { :trainer=>params[:id]})
end
Ce ne sera pas récupérer quoi que ce soit à partir de la base de données.j'utilise postgresql et ruby 1.8.7 et de rails 2.3.8 versions. Je ne comprenais pas ma faute.. quelqu'un Peut-il m'aider?
- C'est plutôt une question de base. Vous devriez prêt ceci: guides.rubyonrails.org/active_record_querying.html
Vous devez vous connecter pour publier un commentaire.
Si vous avez vos associations définies avec has_many, vous n'avez pas besoin d'utiliser de trouver sa voie
Que tu viens de trouver le formateur:
et puis peut accéder à tous les événements avec
Pour que cela fonctionne, vous avez besoin dans votre formateur modèle:
dans votre modèle d'Événement:
et un trainer_id colonne dans le tableau des événements
modifier
De nommage de l'foreign_key colonne "formateur" est une mauvaise idée, il se casse Rails conventions et rend votre vie plus difficile. Vous pouvez dire des Rails qui le nom de la colonne à utiliser comme ceci:
et
mais vous devriez éviter cette situation, si à tout possible, et de changer votre migration au lieu et à reconstruire votre base de données. Cette fonctionnalité est principalement pensé pour permettre l'utilisation de bases de données à partir de vieux projets, pas écrit dans les Rails.
En outre les autres erreurs, dites-vous, qu'il n'existe pas de valeur dans les params[:id]. Avez-vous des données de fixture dans la base de données?
À voir, si ça marche, vous pourriez commencer avec
Ce serait le premier formateur, puis
devrait fonctionner, si l'un des événements de ce formateur existent. Ensuite, vous pouvez savoir quel est le problème avec params[:id], le plus probable est qu'un lien ne fonctionne pas correctement, peut-être que votre formulaire est mal ou le routage de votre contrôleur comporte des erreurs.
Vous essayez trop de choses à la fois, sans avoir fait en sorte, que les notions de base de travail. C'est pourquoi nous avons l'habitude de faire tester le développement en Ruby on Rails.
D'abord configurer le modèle Trainer. Puis le tester, assurez-vous que il ya des formateurs par l'écriture et le chargement des montages, et que les Rails pouvez les trouver.
Après cela, ajouter les événements du modèle (et certains luminaire à nouveau des données). Si vous n'avez pas explicitement écrire des tests, puis au moins utiliser la console Rails (je pense que c'était la commande de script/console dans les Rails 2.x) pour tester. Seulement si vous êtes sûr à 100% qu'il fonctionne sur le modèle de niveau, de commencer à écrire des contrôleurs. De cette façon, vous avez à gérer une seule erreur à un moment donné.
Les clés étrangères sont généralement nommé d'après la table à laquelle ils pointent.
Essayer ce?
Les paramètres de cette méthode post sera params[:event] [formateur] cela permettra de réaliser la valeur de l'id.
et aussi la valeur de la colonne de la foreign_key vérifier.