루비

2014-02-25 1 views
0

에서 CSV에 추가하는 방법은 코드 아래에 있어요.루비

같은 행에있는 csv에 추가 할 수있는 방법이 있습니까?

+0

:

require 'csv' a = CSV.generate("") do |csv| csv << ["foo"] # just wrapped the string into an Array as doc is saying. end a # => "foo\n" 

과 같이 코드를 작성 : 여기

require 'csv' a = CSV.generate("") do |csv| csv << "foo" end # '<<': undefined method 'map' for "foo":String (NoMethodError) 

은 수정입니다 에로의? –

+0

'csv << roles'는 값이 –

+0

이므로 내 대답을 확인하십시오 .. –

답변

0

csv에 추가하면 행 또는 CSV :: Row 객체를 나타내는 배열이 필요합니다. 우선 다음과 같이 어레이를 구축하고 CSV에 그 추가 :

row = user.attributes.values_at("id", "email", "title", "first_name", "last_name", "position", "work_phone", "company", "state", "industry", "mobile", "origin", "terms") 
row << events 
row << roles 
row << booths 
csv << row 
+1

내 답변이 기술적으로 정확하기 때문에 어떤 대답을하지 않더라도 내 답변이 완화 될 수 있도록 의견을 요청하고 싶습니다. – Coenwulf

+1

맨 아래에 주석을 추가하기 전에 downvotes 있었습니까? 아마 어쩌면 설명 부족이 그 이유 일 것입니다. –

+0

예, 적어도 하나는 그 중 하나였습니다. 나는 내가 그것을 추가하고 난 후에 다른 것이었을지도 모른다라고 생각한다. 그러나 나는 확실하지 않다. 의견을 보내 주셔서 감사합니다! – Coenwulf

1

CSV#<< 말한다 :

래핑 문자열과 IO를, 행 (AN 어레이의 기본 기록 방법 또는 CSV : : 행)는 CSV로 변환되어 데이터 소스에 추가됩니다. CSV :: Row가 전달되면 행의 fields()만이 출력에 추가됩니다.

하지만 당신은 stirngs을 전달하고 있습니다. 아래 참조 :

에로 복제 시도
csv << events # string 
csv << roles # string 
csv << booths # string 

: 무슨 일이 라인 #이기

def self.to_csv(options = {}) 
    CSV.generate(options) do |csv| 
    csv << %w{ id email title first_name last_name position work_phone company state industry mobile origin terms events roles booths } 
    all.each do |user| 
     ary = %w[events,roles,booths].map do |item| 
     user.send(item).first.name if user.send(item).present? 
     end 
     row = user.attributes.values_at("id", "email", "title", "first_name", "last_name", "position", "work_phone", "company", "state", "industry", "mobile", "origin", "terms") 
     row.push(*ary) 
     csv << row 
    end 
    end 
end 
+0

Arup,하지만 두 번째, 세 번째 및 네 번째 행에 추가하는 모든 행에 대해이 행을 동일하게 입력하십시오. –

+0

@PassionateDeveloper 오류 수정 방법에 지쳐있었습니다. –

+0

@PassionateDeveloper 코드가 무엇인지 알려주지 않습니다. 너는하려고하고있다. –