2017-12-13 4 views
-1

最初のレコードだけを示し、レールの配列をレンダリング:私はこのように配列を描画しています

<%@products.to_a.each do |foo|%> 
     <th><%= foo %></th> 
    <%end%> 

をして、次の私に戻って与える:

<th>{"ID"=>"50538713", "Product"=>"choco", "Stock"=>0}</th> 
<th>{"ID"=>"10000750", "Product"=>"pepsi", "Stock"=>0}</th> 
<th>{"ID"=>"100538713", "Product"=>"milk", "Stock"=>0}</th> 

が、私は唯一の最初の必要性を"ID"、 "商品"、 "在庫"のような見出しだけを付けて記録する

どうすれば見出しを表示できますか?

+0

@productsの値が何を?そこには、1に制限を設定することができますのみ取得します最初のレコード。また、@productsの値がActiveRecord_Relationオブジェクトの場合、 'to_a'は必要ありません。 –

+0

@セバスチャンが答えてくれてありがとう、製品の価値は#ですが、どのようにして最初のレコードを取得できますか? – luis31

+1

'Product.select(:id、:product、:stock).first.attributes.keys'を試してください。 –

答えて

1

@productsはハッシュの配列ですが、空の配列である可能性があります。空の場合は、空のハッシュを#firstの代わりに使用する必要があります。

次にあなたが最初の要素を取得し、キーを取得し、その後、結果の配列を反復処理することができます:

<% (@products.first || {}).keys.each do |key| %> 
    <th><%= key %></th> 
<% end %> 
+0

あなたの答えのおかげで、これは動作しますが、それは私には任意の値を返さないとき、私はこのエラーを取得するための:ActionView ::テンプレート::エラー(未定義のメソッド 'キーのnil:NilClass): – luis31

+0

@ luis31変更された回答を参照してください。 – moveson

関連する問題