2011-10-31 20 views
3

私のレールアプリでは、私のコントローラページの1つに以下の機能があります。sqlクエリを実行し、結果セットをループで返す

def tree 
@jstree = ActiveRecord::Base.connection.execute("Select sequence, depth, node, imageid, range from.....several joins") 
end 

私は今、結果セットをループしたいだけ私の見解ページtree.html.erbでシーケンスを表示します。私は、次のコードを試して、それは動作していないようです。

<% @jstree.each do |tree| %> 
<%= tree.sequence %> 
<% end %> 

エラーメッセージ:undefined method 'sequence' for #<Array:0x60e0088>が表示されます。

実行されたSQLクエリの結果セットをループして各列の値を表示する方法はありますか?何を@jstreeで取得することは、生のDBアダプタの結果であるため、提供されるすべての提案を

多くの多くのおかげで:)

+0

どのバージョンのレールとどのデータベースアダプタを使用していますか? –

+0

レール2.3.5とmysqlアダプタ – tanya

答えて

3

あなたはこのエラーを取得します。生のSQLクエリを発行していくつかのオブジェクトをクエリする場合は、find_by_sqlを使用します。例:

Client.find_by_sql("SELECT * FROM clients INNER JOIN orders ON clients.id = orders.client_id ORDER clients.created_at desc") 
+0

ありがとう、それはトリックでした:) – tanya

+0

この場合、 'Client'とは何ですか? – Catfish

+0

@Catfishあなたのモデル。 – DnfD

5

は、あなたが探していたものを成し遂げるだろうOP

<% @jstree.each do |tree| %> 
<%= tree[0] %> 
<% end %> 

と同じ構文を維持します。

関連する問題