2009-09-02 11 views
1

J'ai une requête de base de données qui retourne à une variable qui contient une adresse.New to Rails Help

@terminal_address = Terminal.find(:all, :select => :full_address ,:conditions => ["id = ?" , params[:id]]) 

Quand je passe le @terminal_address à mon code de géocodage il des erreurs en raison de la façon dont les données sont transmis. Si je remplace la variable par une adresse entre guillemets cela fonctionne bien. Comment puis-je extraire la chaîne de la variable?

C'est très frustrant!

+1

Pourriez-vous s'il vous plaît signaler le code de géocodage? Votre autre code serait bien aussi :) –

Répondre

4
@terminal_address = Terminal.find(:first, :conditions => ["id = ?" , params[:id]]).full_address 

Cela devrait fonctionner.

ce que vous faites mal:

  • Vous avez demandé: tous au lieu de seulement: d'abord des terminaux, on vous a donné un tableau
  • Chaque entrée dans le tableau est une instance Terminal avec un seul attribut selected (full_address)
+0

Utilisez find_by_id! –

-1

Le @terminal_address est une instance de la classe Terminal. Ainsi, vous devrez obtenir un attribut de cette classe qui contient les informations d'adresse. Dans ce cas, le champ semble être nommé « full_address » Alors quelque chose comme:

Terminal.find(:first, :conditions => ["id = ?" , params[:id]]).full_address 

doit retourner la chaîne d'adresse complète

+0

Utilisez find_by_id! –

2

Euh, pourquoi pas seulement:

Terminal.find_by_id!(params[:id], :select => :full_address).full_address 

Cela soulèvera une erreur lorsque l'identifiant ne peut pas être trouvé.

+0

ya, conditions avec "id =?" ne sont pas si chemin de fer –