2012-07-10 2 views
0

사용자가 HTML 양식을 사용하여 얻은 데이터를 루비 레일의 CSV 파일에 추가하려고합니다. 어떻게해야합니까? 다음은 여기레일에있는 루비의 CSV 파일에 데이터 저장

<p> 
<h2>Register using form below</h2> 
<p class="error"></p> 
<form action="" method="post" class="scrum-form"> 
<p><h3>Participant information</h3></p> 
<div> 
<label>Full name<span class="mandatory">*</span></label> 
<input type="text" name="full_name" class="full_name" /> 
</div> 
<div> 
<label>Email<span class="mandatory">*</span></label> 
<input type="text" name="email" class="email" /> 
</div> 
<div>  
<label>Phone number<span class="mandatory">*</span></label> 
<input type="text" name="phone" class="phone" /> 
</div> 
<div> 
<label>Organization name<span class="mandatory">*</span></label> 
<input type="text" name="organization" class="organization" /> 
</div> 
<div> 
<label>Job title<span class="mandatory">*</span></label> 
<input type="text" name="job" class="job" /> 
</div> 
<div> 
<label>Special diet<span class="mandatory">*</span></label> 
<input type="text" name="diet" class="diet" /> 
</div> 
<p><h3>Billing information</h3></p> 
<div> 
<label>Address<span class="mandatory">*</span></label> 
<textarea cols="40" rows="5" name="address" name="address" class="address"></textarea> 
</div> 
<div> 
<label>Postal code<span class="mandatory">*</span></label> 
<input type="text" name="code" class="code" /> 
</div> 
<div> 
<label>City<span class="mandatory">*</span></label> 
<input type="text" name="city" class="city" /> 
</div> 
<div> 
<label>Cost pool or reference<span class="mandatory">*</span></label> 
<input type="text" name="cost_pool" class="cost_pool" /> 
</div> 
<div> 
<input type="button" name="register" value="Register" onclick="registration();" /> 
</div> 
</form> 
</p> 

내 코드는 내 액션 코드

full_name = params["full_name"] 
email = params["email"] 
phone = params["phone"] 
organization = params["organization"] 
job = params["job"] 
diet = params["diet"] 
address = params["address"] 
code = params["code"] 
city = params["city"] 
cost_pool = params["cost_pool"] 

답변

4

은 루비 CSV 라이브러리 (일명 FasterCSV) http://apidock.com/ruby/CSV

또는 최신 railscasts 중 하나의 시계를보고는 한이다 : http://railscasts.com/episodes/362-exporting-csv-and-excel

+0

첫 번째 링크를 따라 가면 데이터가 csv 파일에 추가됩니다. 하지만 지금은 그 양식을 사용하여 일부 데이터를 추가 할 때마다 동일한 행에 추가되므로 이전에 저장된 데이터가 제거되고 그 위치에 새로운 데이터가 삽입됩니다. 그러나 다음 줄에 새로운 정보를 추가하고 싶습니다. 어떻게해야합니까? – 2619

+1

파일을 열 때''w ''대신''a''를 사용하십시오. – Reactormonk

0

csv 파일에 쓰기는 루비에 내장 된 CSV 클래스를 사용하면 간단합니다. http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV.html

컨트롤러를이 파일에 연결하는 대신 양식을 채울 때 모델을 업데이트하고 표준 데이터베이스를 사용하는 레일 패러다임을 사용하는 것이 좋습니다. 그런 다음 데이터베이스에서 원하는 데이터를 csv로 내보낼 수있는 레이크 작업 또는 관리 페이지를 가질 수 있습니다. 많은 사람들이 실제로 이런 종류의 기능을 위해 ActiveAdmin을 좋아합니다.

@file = "example.csv" 

CSV.open(@file, "wb") do |csv| 
    csv << ["data"] 
    csv << ["data2", "data3"] 
end 

여기 우리가 csv 파일을 가지고 우리는 CSV.open로를 엽니 다

4

내가 당신에게 예를들 것이다. csv 항상 arrays 내부에 몇 가지 데이터를 추가해야합니다. 우리가 csv << array라고 부를 때마다 csv 파일 안에 새로운 줄이 생깁니다. 또한 array 내부의 요소는 파일 내부의 쉼표로 구분됩니다.

예로 돌아가거나, "example.csv" 파일의 첫 번째 줄에는 "data", 두 번째 줄에는 "data2,data3"이 표시됩니다.

그의 대답에 게시 된 @phoet 링크를 확인하십시오. 이 예문과 필요한 다른 것을 이해하는 데 도움이됩니다.

EDITED

당신은 "wb"CSV.open 내부 호출을 변경하여 귀하의 의견 문제를 해결할 수 있습니다.

당신이 "ab"을 통과하면

대신 나는 다음과 같이이 문제를 해결할 보라 : http://ruby-doc.org/core-1.9.3/IO.html :

CSV.open(@file, "ab") do |csv| 
     csv << ["your_new_next_line_data"] 
    end 

어쨌든, 여기 당신이 전달할 수있는 모든 옵션이있는 링크입니다.

+0

나는 당신의 코드를 따랐고 이제 데이터가 csv 파일에 추가됩니다. 하지만 지금은 그 양식을 사용하여 일부 데이터를 추가 할 때마다 동일한 행에 추가되므로 이전에 저장된 데이터가 제거되고 그 위치에 새로운 데이터가 삽입됩니다. 그러나 다음 줄에 새로운 정보를 추가하고 싶습니다. 어떻게해야합니까? – 2619

+0

내 대답을 편집했습니다. 한번보세요 :) –

관련 문제