将数据保存到ruby on rails上的CSV文件中

时间:2012-07-10 18:06:52

标签: ruby-on-rails ruby ruby-on-rails-3

我想在ruby on rails上添加一些使用html表单从用户获取的数据到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"]

3 个答案:

答案 0 :(得分:4)

查看rubies CSV库(又名FasterCSV)http://apidock.com/ruby/CSV

或观看其中一个最新的railscast:http://railscasts.com/episodes/362-exporting-csv-and-excel

答案 1 :(得分:4)

我会举个例子:

@file = "example.csv"

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

我们在这里有一个csv文件,我们用CSV.open打开它。我们必须在csv始终arrays内添加一些数据。每次调用csv << array时,csv文件中都会有一个新行。此外,array中的元素将在文件中用逗号分隔。

因此,回到示例,或"example.csv"文件的第一行会有"data",而第二行会"data2,data3"

检查他的答案上张贴的链接@phoet。将帮助您理解示例以及您可能需要的任何其他内容。

<强> EDITED

您可以通过更改"wb"内部CSV.open来电来解决您的评论问题。

如果您通过"ab"而我相信它会解决您的问题,如下所示:

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

无论如何,这里有一个链接,其中包含您可以传递的所有选项:http://ruby-doc.org/core-1.9.3/IO.html

答案 2 :(得分:1)

使用ruby中的内置CSV类编写csv文件非常简单:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV.html

不是将控制器耦合到此文件,而是建议在填写表单时坚持更新模型(以及使用标准数据库)的rails范例。然后,您可以拥有可以将数据库中所需数据导出到csv的rake任务或管理页面。很多人都非常喜欢ActiveAdmin这种功能。