2017-12-13 1 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

@sebastian, 답변을 주셔서 감사합니다. 제품의 가치는 # 입니다.하지만 어떻게 첫 번째 레코드를 가져올 수 있습니까? – 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

관련 문제