2010-07-05 7 views
2

Je suis un débutant aux rails et j'ai eu besoin d'exécuter une requête sql et la sortie à la vue. Dans mon contrôleur je l'ai utilisé quelque chose comme "@prob = ActiveRecord::Base.connection.execute("...") puis simplement affiché la @prob dans la vue. Cependant, la sortie de la vue continue à venir deux fois à la suite du nom de la colonne 0 résultat.ActiveRecord :: Base.connection.execute duplique la sortie sql

La requête SQL a été

@cprob = ActiveRecord::Base.connection.execute("SELECT DISTINCT cause FROM pages LIMIT 2") 

et mon environnement d'application est

Ruby version 1.8.7 (i386-mingw32) 
RubyGems version 1.3.6 
Rack version 1.0 
Rails version 2.3.5 
Active Record version 2.3.5 
Active Resource version 2.3.5 
Action Mailer version 2.3.5 
Active Support version 2.3.5 
Application root C:/Users/Prateek/BitNami RubyStack projects/noc 
Environment development 
Database adapter sqlite3 
Database schema version 20100616055513 

Mise à jour: - J'ai découvert que le oputput pour ActiveRecord :: Base.connection.execute est en fait un tableau contenant hash comme {: 0 => QueryResult: columnname => QueryResult}

alors comment puis-je obtenir juste le QueryResult de cette

+0

Quelle est la sortie de "SELECT DISTINCT cause FROM pages LIMIT 2" lorsque vous l'exécutez directement sur le SQlserver? –

Répondre

4

Exécuté

`@users = ActiveRecord::Base.connection.execute("SELECT * FROM users")` 

dans mon contrôleur et obtenir les noms d'utilisateur comme

<% @users.each do |user| %> <td><%=h user[1] %></td> <% end %>

en vue

Espoir cela va vous aider à résoudre votre problème

+0

Non, j'ai simplement utilisé ActiveRecord :: Base.connection.execute (requête sql) dans le contrôleur pour ce modèle. – Prateek

Questions connexes