2016-12-24 1 views
1

CSV 파일의 데이터를 Sinatra-App에 어떻게 표시합니까?Sinatra CSV 항목 표시

시나 :

csv = CSV.read(data.csv) 
csv.each do |entry| 
@output = "#{entry[1]},#{entry[4]}:#{entry[0]}" 
end 

ERB :

<%= @data %> 

느릅 나무는 CSV 파일의 마지막 행을 표시합니다.

답변

0

아마도 for 루프를 템플릿 파일로 옮기고 싶을 것입니다. ERB에서시나

@csv_data = CSV.read(data.csv) 

에서

<% @csv_data.each do |entry| %> 
    <%= entry[1] %>,<%= entry[4] %>:<%= entry[0] %> 
<% end %> 
+0

덕분에, 잘 작동 – 8454

1

문제이 코드

는 :

csv = CSV.read(data.csv) 
csv.each do |entry| 
@output = "#{entry[1]},#{entry[4]}:#{entry[0]}" 
end 

당신은 모든 CSV 행을 반복.

각 행에 대해 블록은 @output 변수를 정의합니다.

첫 번째 csv 행 다음에 코드는 @output_variable을 계속 무시합니다.

가능한 해결 방법

당신은 map하지 each해야합니다.

csv = CSV.read(data.csv) 
@data = csv.map do |entry| 
    "#{entry[1]},#{entry[4]}:#{entry[0]}" 
end 

그런 다음 뷰에서

<%= @data %> 

를 사용할 수 있습니다. @data은 이제 각 csv 행에 대해 하나의 문자열을 갖는 문자열 배열입니다.