1

我想将使用 html 表单从用户那里获得的一些数据添加到 ruby​​ on rails 中的 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

3 回答 3

6

我给你举个例子:

@file = "example.csv"

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

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

因此,返回到示例,或者"example.csv"文件将"data"在它的第一行,"data2,data3"在它的第二行。

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

已编辑

"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 。

于 2012-07-10T18:25:37.647 回答
4

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

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

于 2012-07-10T18:14:57.333 回答
1

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

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

于 2012-07-10T18:17:29.383 回答